下面的程序是在主程序里面发送10个数据,并追加一个CRC; 在下面红色一行增加延时,时间过长,CRC就会发不出去;为什么要延时,我是为了给Slave提供足够的响应处理时间。 For循环10000,1000,CRC发不出去;循环缩短到100,就可以。 这是什么原因? 主程序里发数据; for(i=1;i<11;i++) { for(j=0;j<10000;j++); while(LL_SPI_GetTxFIFOLevel(SPI1)==LL_SPI_TX_FIFO_FULL); LL_SPI_TransmitData16(SPI1,i); if(i==10) { for(j=0;j<100;j++); LL_SPI_SetCRCNext(SPI1); } } |
楼主标题,标题,标题,可不可以把问题描述清楚,或者使用中文描述。 LL库没用过,给你贴出了具体函数,我理解是要紧跟最后一数据,延时长了就会出问题,感觉没必要延时,一定要加,也应该在后面加,请高手解读:
评分
查看全部评分
SPI Master发送数据后,延迟设置CRCNext,CRC发不出来
为什么延时一些去设置CRCNEXT,CRC就发布出去呐??
评分
查看全部评分
手册上,写在发送最后一个数据时,Set CRCNext,就可以发送CRC; 疑问就是,为什么发送完最后一个数据,延时一段时间,去设置CRCNext。CRC就发布出去。