串口扩展 232 485和CAN总线 单片机具有控制能力强的优点 但不适于作大量的数据处理 查询等 实际应用中常将单片机作为下位机使用 主要实现数据采集与控制功能 微机通常作为上位机接收下位机采集的各种数据 并进行数据运算 处理等 同时向下位机发出各种指令 因此 实现微机与单片机间数据通信是十分重要的 RS 232C总线标准与应用 RS 232C是使用得最早 最多的一种异步串行通信总线标准 它由美国电子工业协会 ElectronicIndustriesAssociation 于1962年公布 1969年最后一次修订而成 其中RS是RecommendedSandard的缩写 232是该标准的标识 C表示此标准已修改了三次 RS 232C主要用来定义计算机系统的一些数据终端设备 DTE 和数据通信设备 DCE 之间接口的电气特性 目前已广泛用于计算机与终端或外设之间的近端连接 适合于短距离或带调制解调器的通信场合 RS 232C的电气特性 RS 232C标准早于TTL电路的产生 与TTL MOS逻辑电平规定不同 该标准采用负逻辑 低电平表示逻辑1 电平值为 3V l5V 高电平表示逻辑0 电平值为 3V一 l5V 因此 RS 232C不能直接与TTL电路连接 使用时必须加上适当的电平转换电路 否则将使TTL电路烧毁 RS 232C引脚功能 信号分类 RS 232C信号分为两类 一类是DTE与DCE交换的信息 TxD和RxD 另一类是为了正确无误地传输上述信息而设计的联络信号 数据发送与接收线 发送数据TxD 通过TxD线 终端将串行数据由发送端 DTE 向接收端 DCE 发送 按串行数据格式 先低位后高位的顺序发出 接收数据RxD 通过RxD线 终端接收从发送端DTE 或调制解调器 输出的数据 联络信号 这类信号共有6个 请求传送信号RTS 用来表示DTE请求DCE发送数据 即当终端要发送数据时 该信号RTS 1 清除发送信号CTS 用来表示DCE准备好接收DTE发来的数据 是对请求发送信号RTS的响应信号 数据准备就绪信号DSR 这是DCE向DTE发出的联络信号 DSR将指出本地DCE的工作状态 当DSR l时 表示DCE没有处于测试通话状态 这时DCE可以与远程DCE建立通道 数据终端就绪信号DTR 这是DTE向DCE发送的联络信号 DTR l时 表示DTE处于就绪状态 本地DCE和远程DCE之间建立通信通道 而DTR 0时 将迫使DCE终止通信工作 数据载波检测信号DCD 这是DCE向DTE发出的状态信息 当DCD 1时 表示本地DCE接收到远程DCE发送 振铃指示信号RI 这是DCE向DTE发出的状态信息 RI 1时 表示本地DCE接收到远程DCE的振铃信号 RS 232C与单片机的连接 RS 232C接口与单片机联接时需要进行电平转换 常用的电平转换芯片有MC1488 MC1489 MAX232 其中MAX232采用单5V电源供电 使用非常方便 MAX232系列芯片由MAXIM公司生产 内含两路接收器和驱动器 其内部的电源电压变换器可以把输入的 5V电源电压变换成RS 232C输出所需的 10V电压 采用该芯片硬件接口简单 价格适中 所以被广泛使用 MAX232引脚图 MAX232应用电路 略 RS 485总线扩展 RS 485标准接口是单片机系统种常用的一种串行总线之一 与RS 232C比较 其性能有许多改进 实际的单片机通信系统中 是不能真接用两条传输线将串行口连接起来的 这样做传输的距离很近 无法有效进行数据通信 RS 485收发器采用平衡发送和差分接收 因此具有抑制共模干扰的能力 加上接收器具有高的灵敏度 能检测低达200mV的电压 故传输信号能在千米以外得到恢复 RS 485接口可连接成半双工和全双工两种通信方式 常见的半双工通信芯片有SN75176 SN75276 SN75LBC184MAX481 MAX483 MAX485 MAX487等 全双工通信芯片有SN75179 SN75180 MAX488 MAX489 MAX490 MAX491等 通常采用半双工方式组网应用 组网时通常采用终端匹配的总线型结构 采用一条总线将各个节点串接起来 表中为一些常见芯片可联接的节点数 MAX485 MAX485的封装有DIP SO和uMAX三种 其中DIP封装的管脚如图所示 管脚的功能如下 RO 接收器输出端 若A比B大200mV RO为高 反之为低电平 RE 接收器输出使能端 RE为低时 RO有效 为高时 RO呈高阻状态 DE 驱动器输出使能端 若DE 1 驱动器输出A和B有效 若DE 0 则它们呈高阻态 若驱动器输出有效 器件作为线驱动器用 反之作为线接收器用 DI 驱动器输入端 DI 0 有A 0 B 1 当DI 1 则A 1 B 0 GND 接地 A 同相接收器输入和同相驱动器输出 B 反相接收器输入和反相驱动器输出 VCC 电源端 一般接 5V MAX485典型的工作电路 其中平衡电阻Rp通常取100 300欧姆 MAX485的收发功能 89C51与MAX485的接口电路 P1 7用来控制MAX485的接收或发送 其余操作同串口 SN75176芯片 RO 接收器输出 A B 0 2V时 RO 1 A B 0 2V RO 0 接收器输出使能 0 时 允许接收器输出 1 时 禁止接收器输出 RO为高阻 DE 驱动器输出使能 DE 1 时 允许驱动器工作 DE 0 时 驱动器被禁止 输出端A B为高阻 DI 驱动器输入 DI 1 时 A输出高电平 B输出低电平 DI 0 时 A输出低电平 B输出高电平 GND 地 A 接收器同相输入和驱动器同相输出 B 接收器反相输入和驱动器反相输出 VCC 5V电源 连接电路时各驱动器分时使用传输线 不发送数据的驱动器应被禁止 网络上可挂32个站 传输线通常采用双绞线 可以较大程度抑制共模干扰 在传输线的末端接120欧姆的电阻进行阻抗匹配 消除由于不匹配路上产生的信号反射 CAN概述 CAN 全称为 ControllerAreaNetwork 即控制器局域网 是国际上应用最广泛的现场总线之一 最初 CAN被设计作为汽车环境中的微控制器通讯 在车载各电子控制装置ECU之间交换信息 形成汽车电子控制网络 起源 CAN总线是德国BOSCH公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯协议 是交通运载工具电气系统中应用较广的总线 现在向过程工业 机械工业 机器人 数控机床 传感器等方面发展 1993年11月 ISO正式颁布CAN为国际标准ISO11898 支持CAN协议的公司有Intel Motorola Philips Siemens NEC Honeywell等公司 CAN总线的主要技术指标 传输速率 可达到1Mbps 40米以内 传输距离 10千米 5kbps以下 支持的介质 铜线 光纤媒体访问控制方式 CSMA 冲突按优先权解决可挂接的最大节点数 110 CAN总线的信号传送 信号使用差分电压传送 两条信号线被称为 CAN H 和 CAN L 静态时均是2 5V左右 此时状态表示为逻辑 1 也可以叫做 隐性 用CAN H比CAN L高表示逻辑 0 称为 显形 此时 通常电压值为 CAN H 3 5V和CAN L 1 5V CAN总线的数据通信 CAN属于总线式串行通信网络可实现点对点 一点对多点及全网广播几种方式发送接收数据为多主方式工作 通信方式灵活CAN网络按节点类型分成不同的优先级CAN采用非破坏性总线优先级仲裁技术每帧信息都有循环冗余校验CRC及其它检错措施CAN节点在错误严重的情况下 具有自动关闭输出功能CAN总线以报文为单位进行数据传递每个标准报文起始部分有一个11位的标志符ID数据域为0 8个字节 每个字节8位 载波侦听多路访问 冲突检测 利用CSMA CD CarrierSenseMultipleAccesswithCollisionDetect 访问总线 可对总线上信号进行检测 只有当总线处于空闲状态时 才允许发送 利用这种方法 可以允许多个节点挂接到同一网络上 当检测到一个冲突位时 所有节点重新回到 监听 总线状态 直到该冲突时间过后 才开始发送 在总线超载的情况下 这种技术可能会造成发送信号经过许多延迟 为了避免发送时延 可利用CSMA CD方式访问总线 当总线上有两个节点同时进行发送时 必须通过 无损的逐位仲裁 方法来使有最高优先权的的报文优先发送 在CAN总线上发送的每一条报文都具有唯一的一个11位或29位数字的ID CAN总线状态取决于二进制数 0 而不是 1 所以ID号越小 则该报文拥有越高的优先权 因此一个为全 0 标志符的报文具有总线上的最高级优先权 可用另外的方法来解释 在消息冲突的位置 第一个节点发送0而另外的节点发送1 那么发送0的节点将取得总线的控制权 并且能够成功的发送出它的信息 CAN的报文格式 CAN协议定义了四种不同的帧 1 数据帧 这个帧被用于当一个节点把信息传送给系统的任何其它节点 数据帧由7个不同的位域组成 即帧起始 仲裁域 控制域 数据域 CRC域 应答域 帧结束 2 远程帧 此帧是基于数据帧格式 只要把RTR位设置成远程发送请求 RemoteTransmitRequest 并且没有数据场 总线上发送此帧后 表示请求接收与该帧ID相符的数据帧 远程帧由6个不同的位场组成 即帧起始 仲裁域 控制域 CRC域 应答域 帧结束 3 错误帧 任何单元监测到错误时就发送错误帧 错误帧由两个不同的域组成 第一个域是错误标志 用做为不同站提供错误标志的叠加 第二个域是错误界定符 4 超载帧 节点需要增加时间来处理接收到的数据时便发送过载帧 超载帧包括两个位域 超载标志和超载界定符 CAN的数据错误检测 循环冗余检查 CRC 在一帧报文中加入冗余检查位可保证报文正确 接收站通过CRC可判断报文是否有错 帧检查这种方法通过位场检查帧的格式和大小来确定报文的正确性 用于检查格式上的错误 应答错误如前所述 被接收到的帧由接收站通过明确的应答来确认 如果发送站未收到应答 那么表明接收站发现帧中有错误 也就是说 ACK场已损坏或网络中的报文无站接收 CAN协议也可通过位检查的方法探测错误 位填充为保证同步 同步沿用位填充产生 在五个连续相等位后 发送站自动插入一个与之互补的补码位 接收时 这个填充位被自动丢掉 例如 五个连续的低电平位后 CAN自动插入一个高电平位 CAN通过这种编码规则检查错误 如果在一帧报文中有6个相同位 CAN就知道发生了错误 CAN和485的比较 CAN总线连接图 CAN总线系统 汽车CAN 汽车电子系统 一辆采用传统布线方法 点对点方式 的高档汽车中 其导线长度可达2000米 电气节点达1500个 且大约每十年增长1倍典型的控制单元有电控燃油喷射系统 电控传动系统 防抱死制动系统 ABS 防滑控制系统 ASR 废气再循环控制 巡航系统和空调系统 汽车总线要求 传输信息的安全 信号的逻辑 1 明显区别于逻辑 0 异步总线随机地传送数据 根据预先确定的优先权进行总线访问 竞争解决后获胜站点能够访问总线且继续传输信息 具有根据信息内容解决总线访问竞争的能力 总线的功能寻址和点到点寻址能力 节点在尽量小的时间内成功访问总线 最优化的传输速率 波特率 节点的故障诊断能力 具有一定的可扩充性 数字信号的编码 为了保证信息传输的可靠性 对数字信号正确编码非常重要 汽车局域网数据信号多采用脉宽调制和不归零制 NRZ 采用PWM作为编码方案时 波特率上界为3 105kb s 用于传输速率较低的场合 采用NRZ进行信息传输时 可以达到1Mb s 用于传输速率较高的场合 总线访问协议 汽车总线的访问协议一般为争用协议 每个节点都能独立决定信息帧的发送 如果同时有两个或两个以上的节点发送信息 就会出错 这就要求每个节点有能力判断冲突是否发生 发生冲突时按某个规律等待随机时间间隔后重发 以避免再发生冲突 网络协议所使用的防冲突监听措施多为载波监听多路访问 如CAN SAEJ1850 ADVANCED PALMNET等都采用的是 载波监听多路访问 冲突检测 无损仲裁 CSMA CD NDA 。