• C8051F040的CAN总线与RS-232通信
  • C8051F040的CAN总线与RS-232通信

    基于C8051F040的CAN总线与RS-232通信设计
     
      本设计完成了CAN总线与RS-232软件设计。本设计的创新点是:CAN总线与RS-232接口数据通信速率以及通信帧格式都不同,解决了这两点不同,从而实现了数据在CAN总线与RS-232接口之间的交互传输。本文完成了基于C8051F040单片机控制的CAN与RS-232转换的研究与设计,设计了C8051F040单片机对RS-232串口和CAN总线的控制,解决了CAN总线与RS-232接口数据通信速率以及通信帧格式不同的技术问题,实现了RS-232接口数据与CAN总线数据的相互传输。
     
      SiliconLabsCAN的工作位速率可达1M位/秒,实际速率可能受CAN总线上所选择的传输数据的物理层的限制。CAN处理器有32个消息对象,可以被配置为发送或接收数据。输入数据、消息对象及其标识掩码存储在CAN消息RAM中。
     
      标准CAN的标志符长度是11位,而扩展格式CAN的标志符长度可达29位。CAN协议2.0A版本规定CAN控制器必须有一个11位的标识符。而2.0B版本中规定,CAN控制器的标志符长度可以是11位或者29位。遵循CAN2.0B协议的CAN控制器可以发送和接收11位标识符的标准格式报
     
      RS-232是PC机与通信工业中应用最广泛的一种串行接口,具有连线简单、通讯距离长等优点。同样也有一些缺点,接口的信号电平值较高,易损坏接口电路的芯片,传输速率较低,传输距离有限等。RS-232被定义为在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。UART通信可用查询TI和RI或通过中断来控制通信。UART有两种中断源:数据发送完毕时,TI置1;数据完整接受到时,RI置1。TI和RI中任何一个标志位置1,均能引发UART中断。TI和RI中断标志位需软件清0。
     
      Cygnal公司的51系列单片机C8051F040是集成在一块芯片上的混合信号系统级单片机,在一个芯片内集成了构成一个单片机数据采集或控制的智能节点所需要的几乎所有模拟和数字外设以及其他功能部件,代表了目前8位单片机控制系统的发展方向。芯片上有1个12位多通道ADC,2个12位DAC,2个电压比较器,1个电压基准,1个32kB的FLASH存储器,与MCS-51指令集完全兼容的高速CIP-51内核,峰值速度可达25MIPS,并且还有硬件实现的UART串行接口和完全支持CAN2.0A和CAN2.0B的CAN控制器。
     
      控制器局域网(CAN2.0B)控制器,具有32个消息对象,每个消息对象有其自己的标识全速、非侵入式的在系统调试接口(片内)。C8051F040器件内部有一个控制器局域网(CAN)控制器,使用CAN协议实现串行通信。该CAN控制器符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN),方便了CAN网络通信设计。CAN控制器包含一个CAN核、消息RAM(独立于C8051的RAM)、一个消息处理状态机以及控制寄存器。CAN控制器可以工作在高达1M位/秒的位速率。SiliconLabs的CAN有32个消息对象,每个消息对象有其自己的标识掩码,该标识掩码用于对接收到的消息进行过滤。输入数据、消息对象和标识掩码存储在CAN消息RAM中。与数据发送和接收过滤有关的所有协议处理均由CAN控制器完成,不需C8051MCU干预。这就使得用于CAN通信的CPU带宽最小。C8051通过特殊功能控制器(SFR)配置CAN控制器,读取接收的数据,写入要发送的数据。
     
      C8051F040的MCU内部有两个增强型全双工UART、一个增强型SPI总线和SMBus/I2C。每种串行总线都完全用硬件实现,都能向CIP-51产生中断,因此需要很少的CPU干预。这些串行总线不“共享”定时器、中断或端口I/O等资源,所以可以使用任何一个或同时使用多个。
     
      系统采用KeiluVision4软件编程,KeiluVision4是ARM公司推出软件开发平台,其编译器、调试工具实现与ARM器件的完美匹配。程序由初始化和死循环两部分构成。初始化完成对器件数据设置,循环完成数据在RS-232和CAN总线之间的双向通信。
     
      初始化就是通过单片机向其片内的各个寄存器写入控制字的过程。voidRS232_INI函数设置UART为模式1,8位可变波特率通信。voidCAN_INI()函数用来初始化CAN,总线接收、发送信道,并设置波特率。
     
      RS-232传输1字节,而CAN总线传输的是8字节,这要求在通信过程中实现数据匹陪、格式匹配。该模块采用,在串口接收中断中,直接把接收到的串口数据存到8字节的缓存中,计数满八位。主函数中调用函数send_can1(),将数据发送到CAN总线。从而实现将数据从RS-232传输到CAN总线的功能。

    更多型号芯片解密可致电北京致芯科技24小时服务热线:13466687255 010-57436217

    点击这里给我发消息 点击这里给我发消息

      Copyright © 2004-2017 致芯科技 版权所有