这就跟你问声好!PM_Dialog,
我有定制DA14683板,关于设置DA14683(AQFN) USB引脚P1_1和P2_2为SPI MOSI和MISO引脚有问题。
对于pcb布局问题,我的定制板需要设置P1_1(USB引脚)和P2_2(USB引脚)作为SPI MOSI和MISO引脚。
我有跟踪SPI MOSI和MISO信号输出和输入示波器。它可以跟踪波形,以验证硬件是否正常工作。
但是我不能从SPI读取函数得到任何数据。
我尝试设置USB引脚P1_1为SPI MOSI, P4_0为SPI MISO引脚。然后我可以从SPI读取函数接收数据。
我的问题是
可以通过调用REG_SET_BIT(CRG_PER, USBPAD_REG, USBPAD_EN)将DA14683 USB引脚P1_1和P2_2设置为SPI MOSI和MISO引脚;.?
我的代码如下。
REG_SET_BIT (CRG_PER USBPAD_REG USBPAD_EN);
/ / SPI
hw_gpio_set_pin_function(HW_GPIO_PORT_MT6381_SPI_CLK, HW_GPIO_PIN_MT6381_SPI_CLK, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_SPI_CLK);
hw_gpio_set_pin_function(HW_GPIO_PORT_MT6381_SPI_DI, HW_GPIO_PIN_MT6381_SPI_DI, HW_GPIO_MODE_INPUT, HW_GPIO_FUNC_SPI_DI);
hw_gpio_set_pin_function(HW_GPIO_PORT_MT6381_SPI_DO, HW_GPIO_PIN_MT6381_SPI_DO, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_SPI_DO);
hw_gpio_set_pin_function(HW_GPIO_PORT_MT6381_SPI_CSN, HW_GPIO_PIN_MT6381_SPI_CSN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_SPI_EN);
hw_gpio_set_active (HW_GPIO_PORT_MT6381_SPI_CSN HW_GPIO_PIN_MT6381_SPI_CSN);
....
mt6381_spi_handle = ad_spi_open (MT6381_SPI);
spi_tx_buf [0] = SPI_CR_CMD;
spi_tx_buf[1] =注册;
spi_tx_buf [2] = addr;
spi_tx_buf[3] = (data_size & 0xFF) - 1;
spi_tx_buf[4] = (data_size & 0xFF00) >> 8;
spi_tx_buf_data_size = 5;
ad_spi_write (mt6381_spi_handle spi_tx_buf spi_tx_buf_data_size);
memset (spi_tx_buf 0 SPI_BUFFER_LEN);
spi_tx_buf [0] = SPI_RD_CMD;
spi_tx_buf_data_size = 1;
Ad_spi_transact (mt6381_spi_handle, spi_tx_buf, spi_tx_buf_data_size, spi_rx_buf, data_size);
OS_DELAY_MS (SPI_DMA_CALLBACK_IDLE_TIME_MICROSECOND);
memcpy (data_buf_ptr spi_rx_buf data_size);
ad_spi_close (mt6381_spi_handle);
谢谢大家
kuda
嗨kuda,
根据DA14683 datasheet和章节特殊的I/O考虑:
"要在GPIO模式下使用P1_1或P2_2,必须设置USBPAD_REG[USBPAD_EN]。然而,在这个引脚上的允许水平是0V和V33轨上的电压。如果选择1.8V作为引脚电源,那么预期的电流为150 uA。此外,这些引脚不应该在睡眠模式下使用,因为USBPAD_REG将被关闭(属于外围电源域)。”
两者都只能使用3.3V电源轨,所以不能在睡眠模式下供电。你使用DA14683是处于休眠模式还是处于激活模式?
另外,当这些引脚被用作gpio时,确保USB逻辑被停用。
谢谢,PM_Dialog