TI中文支持网
TI专业的中文技术问题搜集分享网站

28035调CAN

明明035的can中的TRS寄存器已经置位,为什么管脚cantx还是没有波形,用的是ti的官方例程,STM已经改为=0

user3917511:

1)邮箱初始化配置:首先应确定从32个邮箱中选择要配置的目标邮箱,比如配置成发送邮箱或接收邮箱,一般是成对出现的。然后是对靠近的邮箱进行ID号(标识符)的配置,数据长度,优先级的设置,是远程帧还是普通扩展数据帧等。

具体步骤总结如下:第一步在写标识符前必须将所有邮箱屏蔽掉,ECanaRegs.CANME.all=0。(第五步,最后将要用到的邮箱配置好后,使能需要用到的邮箱,比如邮箱0和邮箱16,ECanaRegs.CANME.bit.ME0=1;ECanaRegs.CANME.bit.ME16=1;)第二步:通过向寄存器CANMC的CDR位请求改变数据区,该位允许快速更新数据消息。再第五步的时候,需要将该位写0,CPU请求正常操作。第三步,设置邮箱的ID(标识符,发送邮箱对应的接收邮箱的标识符是一致的,这个需注意),数据方向寄存器配置了发送邮箱还是接收邮箱。数据长度,发送优先级的设置,以及是否有远方应答帧的请求,向邮箱RAM区写数据(这个注意:ECanaboxes.MBOXO.MDRL.all=?ECanaboxes.MBOXO.MDRH.all=?)

2)邮箱初始化之后,就可以对其进行发送或者接收操作啦!前面第一步主要是前奏,现在进入主题。

消息的发送操作,分为五步:

第一步:清除CANTRS发送请求置位寄存器—当邮箱n准备发送时,CPU将TRSn置1,启动发送。就相当于一个开关一样,当数据要被发送时,将开关TRSn闭合,则数据发送出去。上电复位,各位都被清0。接着配置发送响应寄存器CANTA,如果邮箱n中的消息已经发送成功,则相应的TAn将置位。CPU通过向TANTA中的位写1,使其复位。如果已经产生中断,向CANTA寄存器写1,则可以清除中断,向CANTA寄存器写0没有影响。上电后,寄存器所有的位都被清除。

第二步:初始化邮箱,见第一部分。

第三步:设置TRS请求发送标志,请求发送消息

第四步:等待传输响应位置位,邮箱完成发送。(由0置1才能跳出循环等待,这点是关键!!!)

第五步:复位TA和传输标志,需要向相应的寄存器位写1才能清零(这点相当重要,向该位写1才能清零,等待下一次发送!!!)。

3)消息的接收操作,分五步操作

第一步:设置局部接收屏蔽寄存器LAMn,它可以指明哪些标识符位

第二步:初始化邮箱

第三步:等待接收响应标志置位

第四步:CPU读取邮箱中的数据

第五步:复位接收消息挂起标志

明明035的can中的TRS寄存器已经置位,为什么管脚cantx还是没有波形,用的是ti的官方例程,STM已经改为=0

mangui zhang:

看看datasheet中的详细说明

http://www.ti.com/lit/ug/sprugl7/sprugl7.pdf

赞(0)
未经允许不得转载:TI中文支持网 » 28035调CAN
分享到: 更多 (0)