主题:CAN总线通讯问题 共有45126人关注过本帖 |
---|
fqjboy |
1楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
CAN总线通讯问题 Post By:2018-3-13 9:16:00 [只看该作者]
ESM3354的开发板,Linux系统,我看到说明书里有对CAN口进行设置的内容,将can0的波特率设置为了250k,但用的命令看不明白,ip link set can0 type can tp 250 prog-seg 5 phase-seg1 8 phase-seg2 2 sjw 2这条命令和下面波特率设置表格里的PRESDIV, TSEG1, TSEG2, TQ这些有什么关系呢? |
单帖管理 | 引用 | 回复 |
hzc |
2楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2018-3-13 11:11:00 [只看该作者]
你好,可以参考这篇文章:http://www.emtronix.com/article/article2013603.html里面有详细的介绍。 |
单帖管理 | 引用 | 回复 |
fqjboy |
3楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2018-3-27 10:05:00 [只看该作者]
这个文章对设置波特率这块儿的内容和开发板带的资料里是一样的,还是不明白。比如如果我想设置波特率为200k,那这个命令里要修改哪些参数值?改为多少呢? 另外,ESM3354的开发版CAN口是直接能用的吧?不需要再内核配置了吧? |
单帖管理 | 引用 | 回复 |
hzc |
4楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2018-3-27 20:58:00 [只看该作者]
你好,可以使用文章里面介绍的方法一:ip link set can0 type can bitrate 200000这样就可以了,其余的值可以不用管,驱动会根据波特率自动算出最匹配的值。文章可以用来参考理解一下这些值的意义。 |
单帖管理 | 引用 | 回复 |
fqjboy |
5楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2018-3-29 14:42:00 [只看该作者]
看代码就明白了,之前没看代码,所以有些不清楚。另外还有个问题,我用GPIO8和GPIO9两个脚接了两个外部设备,这两个外部设备状态的改变应该使得这两个脚的电平高低变化,可是我在程序中读到的状态是它们始终不变,是我有哪里没有设置好吗?它们应该是复用PWM功能的 |
单帖管理 | 引用 | 回复 |
hzc |
6楼 信息 | 搜索 | 邮箱 |
加好友 发短信 员工 |
Post By:2018-3-29 16:09:00 [只看该作者]
你好,只要没有打开pwm节点,默认都是GPIO功能,程序中需要将GPIO置为输入状态,然后每次读取他们的值的时候,都需要更新代入的参数,如下: dwPinState = 0xffffffff; // read states of all bits rc = GPIO_PinState(fd, &dwPinState); if(rc < 0) { printf("GPIO_PinState::failed %d\n", rc); return rc; } 因为每次读取的值会更新dwPinState,所以再次读取的时候需要重新赋值。 |
单帖管理 | 引用 | 回复 |