查看: 1536|回复: 3

[已解决] LPC1768无法释放缓冲区

[复制链接]

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
发表于 2019-1-11 11:30:39 | 显示全部楼层 |阅读模式
我用官方open例程,调试程序就一直死在while这里,我一旦接上周立功的CAN收发器就可以继续运行。为什么无法释放缓冲区呢?
TxBuf = Chip_CAN_GetFreeTxBuf(CAN1);
Chip_CAN_Send(CAN1, TxBuf, &SendMsgBuf);
while ((Chip_CAN_GetStatus(CAN1) & CAN_SR_TCS(TxBuf)) == 0) {}

最佳答案

本帖最后由 toofree 于 2019-1-11 12:36 编辑 CAN这玩意,外面不接设备时,会发送失败,缓冲区不会清空。 正常发送时,也可能发送失败,这时会多次尝试发送,只是用户不知道。 在调试SJA1000时遇到过,由于外部CA ...
回复

使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 2497 天

    [LV.Master]伴坛终老

    23

    主题

    3712

    帖子

    82

    金牌会员

    Rank: 6Rank: 6

    积分
    11712
    最后登录
    2024-4-26
    发表于 2019-1-11 12:29:02 | 显示全部楼层
    本帖最后由 toofree 于 2019-1-11 12:36 编辑

    CAN这玩意,外面不接设备时,会发送失败,缓冲区不会清空。
    正常发送时,也可能发送失败,这时会多次尝试发送,只是用户不知道。
    在调试SJA1000时遇到过,由于外部CAN总线的阻抗不匹配,有时能发送,有时不能,有的设备反应速度快,有的反应速度慢。正常发送一帧数据时,用示波器观察到就一个几十个位的连续码流;当不正常的时候,会多次发送码流,一旦成功,立即停止。
    LPC1768没用过,CAN应该也有类似的机制吧。

    两个CAN接点,两端的120欧终端电阻都接上后,一切正常。

    评分

    参与人数 1 +2 收起 理由
    NXP管管 + 2

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    74

    主题

    266

    帖子

    0

    高级会员

    Rank: 4

    积分
    747
    最后登录
    2023-5-24
     楼主| 发表于 2019-1-11 14:24:24 | 显示全部楼层
    toofree 发表于 2019-1-11 12:29
    CAN这玩意,外面不接设备时,会发送失败,缓冲区不会清空。
    正常发送时,也可能发送失败,这时会多次尝试发 ...

    感谢您的解答。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2021-1-9 21:21
  • 签到天数: 56 天

    [LV.5]常住居民I

    52

    主题

    677

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    1470
    最后登录
    2021-1-9
    发表于 2019-1-12 01:45:05 | 显示全部楼层
    失败重发本身就是can协议内的内容,工业场合使用的协议都有失败重发机制

    评分

    参与人数 1 +1 收起 理由
    NXP管管 + 1

    查看全部评分

    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-26 05:08 , Processed in 0.123748 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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