打印

GD32E103的CAN端口设计上有一个小缺陷!

[复制链接]
2010|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dxfshsh|  楼主 | 2019-7-17 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是从nxp转过来的,现在正使用GD32E103的CAN总线功能,但我发现我无法通过“状态寄存器”读取当前CAN总线的状态,如:是正“发送”  或正“接收”  或正“空闲”,

这个在nxp中是非常方便读取的,可在GD32E103中,却没有任何手段读取总线状态,非常遗憾,希望有大侠指点迷经。

使用特权

评论回复
沙发
lvben5d| | 2019-7-19 11:17 | 只看该作者
看下库函数里 头文件对各个状态定义的宏?查看是否有。 对了,楼主为什么要查看CAN总线状态, CAN总线的设计目的就是为了总线竞争,当N个不同ID的设备上传的时候,不会像RS485哪样,数据包波形被冲突成乱码!

使用特权

评论回复
板凳
dxfshsh|  楼主 | 2019-7-19 21:21 | 只看该作者
查遍了,没有啊!

使用特权

评论回复
地板
lvben5d| | 2019-7-20 08:19 | 只看该作者
dxfshsh 发表于 2019-7-19 21:21
查遍了,没有啊!

/* CAN_STAT */
#define CAN_STAT_IWS                       BIT(0)                       /*!< initial working state */
#define CAN_STAT_SLPWS                     BIT(1)                       /*!< sleep working state */
#define CAN_STAT_ERRIF                     BIT(2)                       /*!< error interrupt flag*/
#define CAN_STAT_WUIF                      BIT(3)                       /*!< status change interrupt flag of wakeup from sleep working mode */
#define CAN_STAT_SLPIF                     BIT(4)                       /*!< status change interrupt flag of sleep working mode entering */
#define CAN_STAT_TS                        BIT(8)                       /*!< transmitting state */
#define CAN_STAT_RS                        BIT(9)                       /*!< receiving state */
#define CAN_STAT_LASTRX                    BIT(10)                      /*!< last sample value of rx pin */
#define CAN_STAT_RXL                       BIT(11)                      /*!< CAN rx signal */
不懂楼主需求,不过是否可以从其他位 弄来你想要的。

使用特权

评论回复
5
dxfshsh|  楼主 | 2019-7-27 10:35 | 只看该作者
lvben5d 发表于 2019-7-20 08:19
/* CAN_STAT */
#define CAN_STAT_IWS                       BIT(0)                       /*!< initia ...

我原以为通过CAN_STAT可以获取当前总线状态,实际上不可以,比如当前为“空闲态”,可CAN_STAT_RS依然是职位的,与接收态相同。

使用特权

评论回复
6
dxfshsh|  楼主 | 2022-1-4 09:50 | 只看该作者
这个问题又被人提出来了,看看有没有解决的办法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

154

帖子

0

粉丝