关于28335的CAN通信问题总结 最近在调试28335的CAN通信,调试的过程中遇到了关于一直等待发送成功TA置位的问题:
do
{
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
} while(ECanaShadow.CANTA.bit.TA25 == 0 ); // Wait for TA25 bit to be set.
这是TI提供的A to B 的工程中的等待发送成功标志置位等待,该程序的工程名虽然是A to B,但是程序中并没有对B口接收邮箱进行ID,方向等初始化,仅仅是对A口的25邮箱(不同的例子可能有些区别)进行发送初始化并且使能了发送,所以这里我的测试是将A口接到我的USB接口的CAN卡上,与PC机通信。
开始测试的时候就遇到了等待TA置位的问题,示波器打CANH和CANL两端没有波形,后来在TI的论坛上查到了原因: http://e2e.ti.com/support/microcontrollers/tms320c20xx_32-bit_real-time_mcus/f/171/p/69248/250556.aspx#250556 即如果通信不成功的话,物理层上CAN通信收发芯片(板子上的CAN驱动IC)是不会给DSP返回ASK应答信号的,那么TA就不会置位。那么通信不成功有哪些原因呢?我下面列举下我知道的原因,希望对大家调CAN有所帮助,同时也欢迎大家补充。
硬件问题:
1、画板子时28335 CAN的GPIO口的定义,就是要确认画板子的时候是否将CAN口的输入和输出口给定义正确,例如有可能就会将DSP的CANRXB口接到CAN驱动IC的TX脚上去,我测试的板子就犯了这样坑爹的错误;-_-|
2、驱动IC的选择,CAN 通信需要接专门的驱动IC才能通信,而不能简单的将28335的CANTX和CANRX连接进行通信。CAN协议经过ISO标准化后有ISO11898标准(125K---1Mbps)和ISO11519-2(10K -----125Kbps)标准两种,这两种协议的物理层的规格是不一样的,其总线连接方式也是不同的,两种规格需要有专门的驱动IC与之对应。一般采用的是ISO11898协议(总线终端电阻为120欧姆),常用的IC有HA13721RPJE/PCA82C250/Si9200/CF15这几种,本次调试用的是Si9200驱动IC;
3、驱动IC的供电电压,由于DSP的GPIO输出是3.3V,所以有些板子上的CAN驱动IC供电也是3.3V,所以在这里要确定所用驱动IC在3.3V的供电电压下是否能正常工作,在网上就看见有些网友说有些驱动IC在3.3V下是不能正常工作的,这个时候设计电路时就可以考虑用磁隔离芯片将DSP和驱动IC隔离开,驱动IC用5V供电;
4、终端电阻的问题,如果你采用的是ISO11898协议的驱动芯片,则你要做通信总线上接上两个120欧姆的终端电阻;
软件问题:
1、28335 CAN的复用GPIO口的设置,这一点28335和2812的是有区别的,2812的CAN口对应的IO是固定的,而28335确实不确定的,像A口就有(GPIO30,GPIO31)和(GPIO18,GPIO19)两种选择,B口有(GPIO8,GPIO10)、(GPIO12,GPIO13)、(GPIO16、GPIO17)和(GPIO20、GPIO21)。这里IO复用CAN使能的时候就要注意了,一定和板子上的接口对应上,TI给的CAN例程中已经完整的列出这些管脚的初始化,屏蔽掉不用的管脚就是了。
2、波特率问题,通信的两个CAN口的波特率必须一致,这个是毫无疑问的。这里28335的波特率设置与2812的也有区别,除了要使能CAN的block外,还要注意CAN clock仅仅是 SYSCLKOUT的一半, 150 MHz SYSCLKOUT (75 MHz CAN clock) 。
还有要注意如TSEG1必须大于或等于TSEG2等这些小问题,具体参考TI的手册或者程序。
3、邮箱的初始化,这里参考Ti的例程就OK了,这里列举一些个人觉得比较要注意的寄存器赋值:
a、ECanbShadow.CANMC.bit.ABO = 1; //auto bus on
b、ECanbShadow.CANBTC.bit.SAM = 1; //required if BRP is > 4
c、ECanaShadow.CANMC.bit.STM = 0; // Configure CAN for nomal mode
4、ID屏蔽的问题,这里建议刚开始调试时,如果是用CAN卡来接收,则建议不使用ID滤波,也就是使能CAN卡不论发送的数据的ID是什么,都接收;如果是DSP接收,则建议将发送和接收的邮箱ID设置成一样的,通信正常后在玩ID屏蔽的功能。
以上就是自己在调试的过程中遇到的一些会造出通信不正常的问题,有不正确的地方,希望大家能够指正。
TI提供的例子有两个:1、selftest 2、A to B 。
seltest就是TI提供的自测模式,该模式发送端口同时也是接收端口,但是该模式下接收邮箱的ID不会被发送数据的ID覆盖,因此selftest的模式下不能测试涉及ID的CAN通信协议,在selftest模式下,只要将自测模式改为正常模式,A口就可以正常的向外面发送数据了:
CANMC.bit.STM = 1; // Configure CAN for selftest mode
改为
CANMC.bit.STM = 0; // Configure CAN for selftest mode
A to B例程只定义了A口的25邮箱为发送邮箱并且发送数据,并没有把B邮箱定义为接收邮箱并接受数据,所以要想在28335的板子上实现A to B的can通信还要B邮箱定义为接收邮箱并接受数据。
第二篇:关于无障碍设计的几个问题总结
关于无障碍设计的几个问题总结 RSS 打印 复制链接 大 中 小 发布时间:20xx-10-07 11:43:35
无障碍设计大体包括:坡道、栏杆、入口、门、卫生间、电梯等几个方面,做个小总结。
1、坡道
1)有台阶的建筑物入口无障碍坡道宽度不小于1.2m。室内无障碍坡道的最小宽度为1.0m。主要供残疾人使用的走道宽度不应小于1.8m。
2)坡道休息平台的水平长度不应少于1.5m。
3)无障碍坡道的坡度在不受场地限制时应为1/12。受场地限制时可以为1/10~1/8。每段坡长不大于9m,每段坡升起的最大高度为0.75m。坡道两侧应设扶手。
4)大型公共建筑,可供两辆轮椅通过的走道净宽不应小于1.8m。
2、坡道栏杆
1)坡道、台阶及楼梯两侧应该设扶手。
2)扶手高度不小于0.85m。
3)扶手起点和重点处延伸应大于或等于0.3m。
4)扶手末端应向内拐到墙面,或向下延伸0.1m。
5)台阶从三级起应设扶手。
3、入口
1)无障碍入口是不设台阶的建筑入口,其室外地面坡度不应大于1:50。
2)公共建筑和高层、中高层居住建筑入口设置台阶时,必须设轮椅坡道和扶手。
3)一般建筑入口轮椅通行平台的最小宽度为1.5m。大型公共建筑入口和轮椅通行平台应设雨篷,入口轮椅通行平台最小宽度为2.0m。
4)入口门厅、过厅设两道门时,门扇同时开启最小间距为不小于1.2m。大中型公共建筑为1.5m。
4、门
1)供轮椅通行的一般的门,门扇开启的最小净宽为0.8m。
2)通过一辆轮椅的检票口、结算口通道净宽不应小于0.9m。
3)不得采用旋转门。可以采用推拉门、折叠门以及小力度的弹簧门。
4)门把手一侧的墙面,应留有不小于0.5m的墙面宽度。
5、无障碍卫生间
1)无障碍厕位的门扇应外开,内侧应设关门扶手。
2)卫生间室内外高差不应大于15mm。
3)公共厕所无障碍男女应各设一个无障碍隔间厕位。厕位应设蹲式大便器。
4)通道宽度不小于1.5m。或有1.5m的回转半径。
6、公共建筑无障碍电梯
1)电梯候梯厅深度不小于1.8m。
2)电梯厅门开启后的净宽不小于0.90m。
3)电梯轿厢面积不小于1.40mX1.10m。