共有1973人关注过本帖树形打印复制链接

主题:CAN总线通讯问题

帅哥哟,离线,有人找我吗?
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,所以再次读取的时候需要重新赋值。


  单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

CAN总线通讯问题

用户名:          
内容:
               签名