Hi,
cyw20719b2的SPI1工作于slave模式,外设发送的数据经常不能被cyw20719b2的SPI1正常接收。现象如下:
1)cyw20719b2启动后,如果SPI1第一次接收的数据正常,那么之后始终可以正常接收。
2)cyw20719b2启动后,如果SPI1第一次接收的数据不正常,那么之后都正常,而且从FIFO读入的都保持同样的数值。
代码片段如下:
#include "wiced_hal_pspi.h"
...
wiced_hal_pspi_reset(SPI1);
wiced_hal_pspi_init(SPI1, 0, SPI_LSB_FIRST, SPI_SS_ACTIVE_HIGH, SPI_MODE_1);
wiced_hal_pspi_slave_enable_rx(SPI1);
...
wiced_hal_pspi_slave_rx_data();
...
问题可能出在什么地方?
谢谢
- 标签:
-
AIROC™ Bluetooth
请问你的应用中是否有用到UART?
使用了PUART,未使用HUART
有没有调用下面的函数:wiced_transport_init( &transport_cfg );
HCI UART和SPI1共用buffer,两个不能同时使用。
没有使用HCI UART, 也没有调用上述函数
是否可以提供一个可以复现问题的程序?
程序需要一个SPI接口的Master外设,您可能没法运行。
这几天发现,如果SPI口不正常,按一下RESET按钮就可以正常工作了,
请问可能是什么原因引起的?
我对照了一下CYW20719B2_SPI例子,发现例子中的:
wiced_hal_pspi_init();
wiced_rtos_create_thread();
在case BTM_ENABLED_EVT: 中调用。
而我的代码中在APPLICATION_START()中调用,会不会是这个原因引起的?
请问你修改了这个调用位置之后,问题是否解决了?
直接跑demo会有问题吗?
这两天测试了多次一直没有问题,但是今天又出现了相同的问题。
CYW20719B2_SPI这个demo将读取SPI的线程优先级设为5,而我改为了1,这会有问题吗?
你可以把优先级改回去试一下看问题是否复现。