查看: 3491|回复: 7

[已解决] 求K20使用SPI从站FIFO的例程

[复制链接]
  • TA的每日心情
    开心
    2019-7-2 13:42
  • 签到天数: 31 天

    连续签到: 1 天

    [LV.5]常住居民I

    12

    主题

    253

    帖子

    0

    高级会员

    Rank: 4

    积分
    576
    最后登录
    2020-4-7
    发表于 2017-12-1 10:51:40 | 显示全部楼层 |阅读模式
    求K20使用SPI从站FIFO的例程。
    我使用了K20与KL16以FIFO方式进行SPI通信。K20做为SPI从站。接收正常,发送不正常。这一次会发上次的最后两个字节和这次的前6个字节。
    希望能给个例程,学习一下。
    我在NXP官网上使用生成的KSDK里没有找到我想要的例程。

    最佳答案

    bjx1234 发表于 2017-12-1 14:36 不像是buff的问题,感觉上像是在移位寄存器里 你可以单独做个测试试试,搞个数组,里面放顺序值,然后接收到后顺序发出去,看看到底是怎么情况。 ...
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24876
    最后登录
    2025-7-18
    发表于 2017-12-1 13:28:25 | 显示全部楼层
    如果从机发送不正常,接受正常。
    你必须提前把SPI的发送buff给填上,不要等收到SPI的时候再填就迟了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24876
    最后登录
    2025-7-18
    发表于 2017-12-1 13:28:32 | 显示全部楼层
    如果从机发送不正常,接受正常。
    你必须提前把SPI的发送buff给填上,不要等收到SPI的时候再填就迟了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-2 13:42
  • 签到天数: 31 天

    连续签到: 1 天

    [LV.5]常住居民I

    12

    主题

    253

    帖子

    0

    高级会员

    Rank: 4

    积分
    576
    最后登录
    2020-4-7
     楼主| 发表于 2017-12-1 13:39:17 | 显示全部楼层
    小恩GG 发表于 2017-12-1 13:28
    如果从机发送不正常,接受正常。
    你必须提前把SPI的发送buff给填上,不要等收到SPI的时候再填就迟了。
    ...

    怎样才能提前把发送buff填上。我自编的通信协议是从机必须收到了正确了才应答。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24876
    最后登录
    2025-7-18
    发表于 2017-12-1 14:23:49 | 显示全部楼层
    bjx1234 发表于 2017-12-1 13:39
    怎样才能提前把发送buff填上。我自编的通信协议是从机必须收到了正确了才应答。
    ...

    就是接收数据之前,就判断发送Buff为空,然后装载要发送的数据进去。
    如果,必须要等接到数据之后,才发送,那么你只能在你的自定义协议上面做一个错位了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-2 13:42
  • 签到天数: 31 天

    连续签到: 1 天

    [LV.5]常住居民I

    12

    主题

    253

    帖子

    0

    高级会员

    Rank: 4

    积分
    576
    最后登录
    2020-4-7
     楼主| 发表于 2017-12-1 14:36:26 | 显示全部楼层
    小恩GG 发表于 2017-12-1 14:23
    就是接收数据之前,就判断发送Buff为空,然后装载要发送的数据进去。
    如果,必须要等接到数据之后,才发 ...

    不像是buff的问题,感觉上像是在移位寄存器里
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24876
    最后登录
    2025-7-18
    发表于 2017-12-1 15:55:04 | 显示全部楼层
    bjx1234 发表于 2017-12-1 14:36
    不像是buff的问题,感觉上像是在移位寄存器里

    你可以单独做个测试试试,搞个数组,里面放顺序值,然后接收到后顺序发出去,看看到底是怎么情况。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-2 13:42
  • 签到天数: 31 天

    连续签到: 1 天

    [LV.5]常住居民I

    12

    主题

    253

    帖子

    0

    高级会员

    Rank: 4

    积分
    576
    最后登录
    2020-4-7
     楼主| 发表于 2017-12-12 16:52:35 | 显示全部楼层
    本帖最后由 bjx1234 于 2017-12-12 17:05 编辑
    小恩GG 发表于 2017-12-1 15:55
    你可以单独做个测试试试,搞个数组,里面放顺序值,然后接收到后顺序发出去,看看到底是怎么情况。 ...
    由于是spi slave,那么自己没有收到master的时钟,就不能把数据放入shift register.
    我试了,一样的。做为SPI master发出8个oxff, slave重复发出00~07,master那么收到07,00~06.无论用FIFO还是用DMA,现象都一样。查看看TFUF是1,是发生了FIFO underflow的情况。参考手册却不说这种情况怎么才能改对。

    If an external bus master initiates a transfer with a module slave while the slave's TX
    FIFO is empty, the Transmit FIFO Underflow Flag (TFUF) in the slave's SR is set. See
    Transmit FIFO Underflow Interrupt Request for details.


    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 12:20 , Processed in 0.109854 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表