工具与软件:
尊敬的论坛:
我有两个 LaunchPad 配置为以24MHz 的频率运行、使用半双工传输轮询方法通过 SPIsending 从主器件到从器件的随机32字节数据包、我认为代码正是 USCI42勘误表的受害者、但不确定。 我已经尝试了一堆不同的方法来解决它没有运气。
主器件按如下方式进行配置
e2e.ti.com/.../spi_5F00_master_5F00_config.c
发送和接收如下所示:
memset((void *)txbuff, 0, PACKET_BUFFER_MAX_SIZE); memset((void *)rxbuff, 0, PACKET_BUFFER_MAX_SIZE); randomizeData((void *)txbuff, PACKET_BUFFER_MAX_SIZE); spi_master_Transfer((void *)txbuff, PACKET_BUFFER_MAX_SIZE); __delay_cycles(120000); spi_master_Receive((void *)rxbuff, PACKET_BUFFER_MAX_SIZE); printf("\r\nTX Buffer:\r\n"); printBuffer((void *)txbuff, PACKET_BUFFER_MAX_SIZE); printf("\r\nRX Buffer:\r\n"); printBuffer((void *)rxbuff, PACKET_BUFFER_MAX_SIZE); send_receive_slave = false;
另一个板上的 SPI 接收使用如下中断进行设置:
e2e.ti.com/.../spi_5F00_slave_5F00_config.c
第一次传输工作正常、然后所有后续传输错误且第一个字节错误、如下图所示、我用按钮启动传输。
在第一次传输之后、 UCB0TXBUF 中的地址为0xFF、下一次传输将该值作为第一个字节。 我还没有找到清除方法、在下一次传输之前、外设复位没有清除它? 是否有办法解决此问题或在后续传输之前操作不当? 如果有任何帮助、将不胜感激。
——乔治