请选择 进入手机版 | 继续访问电脑版
查看: 194|回复: 3

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

[复制链接]

该用户从未签到

65

主题

240

帖子

0

金豆

高级会员

Rank: 4

积分
611
最后登录
2019-2-14
发表于 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的每日心情
    开心
    半小时前
  • 签到天数: 737 天

    [LV.9]以坛为家II

    23

    主题

    1932

    帖子

    79

    金豆

    金牌会员

    Rank: 6Rank: 6

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

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

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

    评分

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

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    65

    主题

    240

    帖子

    0

    金豆

    高级会员

    Rank: 4

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-3-11 21:51
  • 签到天数: 42 天

    [LV.5]常住居民I

    48

    主题

    639

    帖子

    5

    金豆

    金牌会员

    Rank: 6Rank: 6

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

    评分

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

    查看全部评分

    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2019-3-25 01:33 , Processed in 0.158879 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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