Part Number:EK-TM4C123GXL
TI各位好:
昨天使用SSIDataGet接收资料时,遇到一个问题。我无法接收第9笔资料,使用示波器观看波形,有显示第九笔波形出来。 Data Sheet内说Rx_FIFO大小是8*16,可能是这个原因造成我无法接收到第九笔资料,想询问解决方式。 程式如下: for(SSI_j = 0; SSI_j<Data_RX; SSI_j++) {SSIDataGet(SSI0_BASE, &Data[SSI_j]); }
Susan Yang:
BEN YU 说:我无法接收第9笔资料,使用示波器观看波形,有显示第九笔波形出来。
您是否有进行在线debug?通过设置断点等方式来查看代码的运行情况
另外是否有检查FIFO内的数据是否被拿走(即FIFO是否是空的)?
,
BEN YU:
观看程式运形状况都会卡在第九笔,后来更改为SSIDataGetNonBlocking程式不会卡,但是第九笔资料还是读不到。 至于是否有检查FIFO内的数据是否被拿走(即FIFO是否是空的)? 这部份还不太熟悉,要如何检查和清空FIFO,是否有范例可看? 我有尝试使用中断,但是结果还是无法读取到第九笔资料 SSIIntEnable(SSI0_BASE,SSI_RXFF|SSI_RXTO); Void SSI0_Interrupt(void) {uint32_t ui32Status;ui32Status = SSIIntStatus(SSI0_BASE, true);for(SSI0_j= 0; SSI0_j< NUM_SSI_DATA; SSI0_j++) {SSIDataGet(SSI0_BASE, &pui32DataRx[SSI0_j]);pui32DataRx[SSI0_j] &= 0x00FF; } SSIIntClear(SSI0_BASE, ui32Status); }
,
Susan Yang:
建议您参考下面链接的写法:
https://blog.csdn.net/Attack_on_cc/article/details/87926159
void vSPI_Transmit(uint8_t *ucp_Data, uint16_t us_Size);和void vSPI_Receive(uint8_t *ucp_Data, uint16_t us_Size);函数是对上面的读写函数的一个封装实现了连续读以及连续写。
,
BEN YU:
感谢回覆,思考一下知道问题点了。我程式流程,就是我每次都是发送完全部资料,才去接收回传资料,我忽略同步接收。
,
Susan Yang:
谢谢您的反馈