大家好、
我们希望在下面就我们客户的询问寻求您的帮助。
我已通过 SPI 协议将 TI C2000 (主器件)连接到 CC3220SF (从器件)、然后将 CC3220SF 连接到 AWS IoT 以进行数据存储。 我能够 通过 MATLAB Simulink 块、通过 SPI 将来自 TI C2000电路板的随机数据(例如电压、电流、SOC)阵列发送到在 Code Composer Studio 中编码的 CC3220SF。 CC3220SF 还能够连接到 AWS IoT 并通过 MQTT 将数据存储到 AWS DynamoDB。 但是、在将数据存储到 AWS 时、它只能发布大约25次(在 MQTT 测试客户端中):

然后、突然、MQTT 测试客户端中接收到的数据为空:

然后、在检查 AWS DynamoDB 时、25个[1x3]数据数组中只有大约9个与日期-时间一起存储。 在这些接触中、C2000和 CC3220SF 仍在相互交换数据:

查看我的 MATLAB Simulink 代码、在启动后、C2000的 SPI 接收块始终会获得"1"的状态、这是由于溢出导致的数据丢失、如以下 MATLAB 文档所示: https://www.mathworks.com/help/supportpkg/texasinstrumentsc2000/ref/c28xspireceive.html
有时 、C2000 会接收显示在连接到 C2000 SPI 接收块(Rx 端口)的显示块中的垃圾数据(6.554e+04):

有时为"0"。 以下是代码块:

之前、我能够在 uint16_t 数据类型下将值'56'从 CC3220SF 发送到 C2000 (MATLAB Simulink)。 但现在、我无法确定 C2000 SPI 接收块为什么不能接收来自 CC3220SF 的任何数据而没有任何错误。
我已经在 CCS 中对 CC3220SF 代码进行了多次修改、但仍然无法正常工作。 这是我之前使用过的代码片段(但现在不使用):
uint16_t slaveTxBuffer[SPI_MSG_LENGTH]; //…… 这里有一些代码... //复制消息到发送缓冲区 z = 56; slaveTxBuffer[0]= z; //在数据交换期间循环内部 slaveTxBuffer[0]= 0; memset (void *) slaveRxBuffer、0、2); transaction.count = 3; transaction.txBuf =(void *) slaveTxBuffer; transaction.rxBuf =(void *) slaveRxBuffer;
问题:
1) 1)来自 MATLAB Simulink 的 SPI 接收块错误是否是向 AWS 发送数据的流程不稳定且不成功的原因?
2) 2)无论原因如何、您能否帮助我确定为什么 C2000 SPI 接收块始终会出现错误? 以及如何修复它?
3) 3)我是否在该过程中遗漏了某个内容、或者是否有其他原因导致数据传输和存储失败至 AWS?
此致、
Danilo













