问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 5111 人浏览分享

开启左侧

关于CH10 SPI通信测试实验

[复制链接]
5111 2
悬赏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 | 显示全部楼层
越努力越幸运!加油!

举报 使用道具

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

本版积分规则

0

关注

1

粉丝

20

主题
精彩推荐
热门资讯
网友晒图
图文推荐

  • 微信公众平台

  • 扫描访问手机版