[X]关闭

关于CH10 SPI通信测试实验

文档创建者:卢新硕
浏览次数:4345
最后更新:2019-09-14
悬赏1积分未解决
本帖最后由 卢新硕 于 2019-9-14 12:07 编辑

在提供的xsips.c文件中有这样一句代码:
  1. * Clear the RX FIFO and drop any data.
  2.          */
  3.         Check = (XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
  4.                 XSPIPS_SR_OFFSET) & XSPIPS_IXR_RXNEMPTY_MASK);
  5.         while (Check != (u32)0U) {
  6.                 Temp = (u8)XSpiPs_RecvByte(InstancePtr->Config.BaseAddress);
  7.                 if(Temp != (u8)0U){
  8.                 }
  9.                 Check = (XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,
  10.                 XSPIPS_SR_OFFSET) & XSPIPS_IXR_RXNEMPTY_MASK);
复制代码

        }就是读取地址为0xe000_6004的寄存器的fifo中的数据数目 1: FIFO has more than or equal to THRESHOLDentries
0: FIFO has less than RX THRESHOLD entries。下面的一句代码就有意思了,while (Check != (u32)0U)这是在有比阈值多或者相等的情况下一直执行吗?程序不就一直卡在这里了吗?这里是不是应该改成 if(Check != (u32)0U),还是说SDK中的程序也是并行执行的?不会吧

发表评论已发布 2

卢新硕

发表于 2019-9-14 12:08:05 | 显示全部楼层

........................我错了,没分析        Check = (XSpiPs_ReadReg(InstancePtr->Config.BaseAddress,                XSPIPS_SR_OFFSET) & XSPIPS_IXR_RXNEMPTY_MASK);每次程序都会自动检查的啊,尴尬,请大家忽略我

回复

使用道具 举报

uisrc

发表于 2019-9-14 12:39:43 | 显示全部楼层

越努力越幸运!加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则