你好,
我正在与DA14683 Development Kit中的液晶显示和生物传感器ST7735进行通信。
ST7735和生物传感器都是SPI总线协议。我想在spi 2上设置ST7735,在spi 1上设置生物传感器。
我在spi1上测试了ST7735,它是工作。
然而,我修改st7735从spi 1到spi2, csn引脚是工作,但时钟和mosi引脚不输出信号。
测量结果如附件。
是否有任何参数或api需要设置?
//*************修改st7735从spi 1到spi2
SPI_BUS (SPI1)
# ifdef CONFIG_SPI_DISPLAY
// spi_slave_device (spi1, display_spi, hw_gpio_port_display_spi_csn, hw_gpio_pin_display_spi_csn, hw_spi_word_8bit, hw_spi_pol_low, hw_spi_pha_mode_0, hw_spi_freq_div_2, hw_dma_channel_0);
# endif
SPI_BUS_END
SPI_BUS (SPI2)
# ifdef CONFIG_SPI_DISPLAY
Spi_slave_device (spi2, display_spi, hw_gpio_port_display_spi_csn, hw_gpio_pin_display_spi_csn, hw_spi_word_8bit, hw_spi_pol_low, hw_spi_pha_mode_0, hw_spi_freq_div_2, hw_dma_channel_6);
# endif
SPI_BUS_END
谢谢
kuda
设备:
嗨kuda,
能否分享一下peripher_init()函数中的GPIO配置?
谢谢,PM_Dialog
这就跟你问声好!
附加的文件是我的项目,——> ble_peripheral与spi函数测试。
谢谢大家。
kuda
#定义HW_GPIO_PORT_UART2_TX HW_GPIO_PORT_1
#定义HW_GPIO_PIN_UART2_TX HW_GPIO_PIN_3
#定义HW_GPIO_PORT_UART2_RX HW_GPIO_PORT_2
#定义HW_GPIO_PIN_UART2_RX HW_GPIO_PIN_3
#定义HW_GPIO_PORT_DISPLAY_SPI_CLK HW_GPIO_PORT_3
#定义HW_GPIO_PIN_DISPLAY_SPI_CLK HW_GPIO_PIN_1
#定义HW_GPIO_PORT_DISPLAY_SPI_DI HW_GPIO_PORT_2
#定义HW_GPIO_PIN_DISPLAY_SPI_DI HW_GPIO_PIN_2
#定义HW_GPIO_PORT_DISPLAY_SPI_DO HW_GPIO_PORT_1
#定义HW_GPIO_PIN_DISPLAY_SPI_DO HW_GPIO_PIN_1
#定义HW_GPIO_PORT_DISPLAY_SPI_CSN HW_GPIO_PORT_3
#定义HW_GPIO_PIN_DISPLAY_SPI_CSN HW_GPIO_PIN_2
#定义HW_GPIO_PORT_DISPLAY_RESET HW_GPIO_PORT_1
#定义HW_GPIO_PIN_DISPLAY_RESET HW_GPIO_PIN_0
#定义HW_GPIO_PORT_DISPLAY_DC HW_GPIO_PORT_1
#定义HW_GPIO_PIN_DISPLAY_DC HW_GPIO_PIN_7
空白displayGpioInit(空白)
{
# ifdef CONFIG_SPI_DISPLAY
REG_SET_BIT (CRG_PER USBPAD_REG USBPAD_EN);
/ / SPI
hw_gpio_set_pin_function(HW_GPIO_PORT_DISPLAY_SPI_CLK, HW_GPIO_PIN_DISPLAY_SPI_CLK, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_SPI_CLK);
hw_gpio_set_pin_function(HW_GPIO_PORT_DISPLAY_SPI_DI, HW_GPIO_PIN_DISPLAY_SPI_DI, HW_GPIO_MODE_INPUT, HW_GPIO_FUNC_SPI_DI);
hw_gpio_set_pin_function(HW_GPIO_PORT_DISPLAY_SPI_DO, HW_GPIO_PIN_DISPLAY_SPI_DO, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_SPI_DO);
hw_gpio_set_pin_function(HW_GPIO_PORT_DISPLAY_SPI_CSN, HW_GPIO_PIN_DISPLAY_SPI_CSN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_SPI_EN);
hw_gpio_set_active (HW_GPIO_PORT_DISPLAY_SPI_CSN HW_GPIO_PIN_DISPLAY_SPI_CSN);
/ /显示复位
hw_gpio_set_pin_function(HW_GPIO_PORT_DISPLAY_RESET, HW_GPIO_PIN_DISPLAY_RESET, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
hw_gpio_set_active (HW_GPIO_PORT_DISPLAY_RESET HW_GPIO_PIN_DISPLAY_RESET);
/ /显示D / C
hw_gpio_set_pin_function(HW_GPIO_PORT_DISPLAY_DC, HW_GPIO_PIN_DISPLAY_DC, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
hw_gpio_set_active (HW_GPIO_PORT_DISPLAY_DC HW_GPIO_PIN_DISPLAY_DC);
# endif
}
嗨kuda,
如果您想将SPI1块更改为SPI2块,还应该更改引脚的配置。为此,您需要配置哪个GPIO具有SPI2的哪个功能。在hw_gpio.h中你会发现:
如果您正在使用SPI2块,而gpio仍然配置为SPI1的yuncionality,这将永远不会工作,因为您“说话”到一个不同的HW块。
您应该相应地更改hw_gpio_set_pin_function()。你也可以看看SPI适配器的概念教程来自DA1468x产品页面,您将找到使用SPI适配器的详细指南。
谢谢,PM_Dialog