A. 单片机与单片机之间如何进行串行通信
找个单片机教程上面都有 两机RXD TXD 对连,然后编写各个的通讯程序!也有的单片机是带CAN 的 那就按照说明连 ,编写对应的通讯程序!
B. 单片机的通信方式有那些
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。
C. 单片机Can通讯怎么用,
首先,CAN通信需要有接口的,在有接收的基础上,再加一片CAN总线驱动芯片PCA82C250才行。
这是要看你是什么单片机了,有的单片机带有CAN接口的,就像带有串口UART一样。
带有CAN接口的单片机,有专用的通信用寄存器来实现通信,与串口无关。
没有CAN接口的单片机,如51系列的,就需要加一片CAN扩展接收芯片,如SJA1000,通信时,是按外部扩展接口来实现的,当然了,用SJA1000也同样需要PCA82C250芯片的。
另外,在CAN通信时,具有很严格的通信协议的,必须按协议写程序才行的。并不像串口通信那么简单的。
D. pic18单片机的can通信怎么发送和接收16字节数据怎么分包具体代码实现。
……之前问这个问题的也是你吧。
CAN 2.0A/B的扩展帧最多可携带8字节数据。所以你应当合理设计通讯协议,在ID域中体现出包序号和拼包要求,16字节数据拆分为两个8字节的块,用两个帧分别传输。接收端根据ID判定是否需要拼包、这是第几包,在应用层或协议层自行完成拼包。
E. 怎么使两个单片机间进行CAN通信
如果单片机本身带有CAN接口,那么外部加好CAN收发器、连好线、跳好终端电阻,之后配置好相应的寄存器,就能通信了。
如果单片机自身没有CAN接口,那么外部还需要额外添加CAN控制器,单片机通过SPI总线或并行总线访问CAN控制器进行配置和数据交换。
F. STM32单片机CAN通信,CAN控制器采用TJA1050,CANH与CANL输出波形一致是怎么回事呢
CAN总线通过CAN控制器接口芯片上的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低 电平或悬浮状态。
CAN总线的接口芯片目前用的比较多的就是SJA1000,它是将数据转换成CAN数据帧,但要与CAN总线连接还必须用PCA82C250,说得更准确点是:SJA1000和PCA82C250必须配对使用。
(6)can单片机数据通信扩展阅读:
CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。
这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。
而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现像在网络中,因个别节点出现问题,使得总线处于“死锁”状态。
G. 51单片机运用can总线的通信协议 急!!!!!!!!!!
http://www.51c51.com/
CAN全称为Controller Area Network,即控制器局域网,由德国Bosch公司最先提出,是国际上应用最广泛的现场总线之一。最初CAN 被设计作为汽车环境中的通讯,在汽车电子控制装置之间交换信息形成汽车电子控制网络。由于其卓越的性能、极高的可靠性和低廉的价格现已广泛应用于工业现场控制、医疗仪器等众多领域[1][2]。
CAN协议是建立在OSI 7层开放互连参考模型基础之上的。但CAN协议只定义了模型的最下面两层:数据链路层和物理层,仅保证了节点间无差错的数据传输。CAN的应用层协议必须由CAN 用户自行定义,或采用一些国际组织制订的标准协议。应用最为广泛的是DeviceNet和CANopen,分别广泛应用于过程控制和机电控制领域。但此类协议一般结构比较复杂,更适合复杂大型系统的应用。笔者在研制一种基于CAN总线的分布式高频开关电源充电机系统的过程中设计了一种适合于小型控制系统的CAN总线高层通信协议。
2 CAN的特点[3]
CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10km时,CAN仍可提供高达50kbps 的数据传输速率。
CAN具有十分优越的特点:
(1) 较低的成本与极高的总线利用率;
(2) 数据传输距离可长达10km,传输速率可高达1Mbps[7];
(3) 可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发;
(4) 节点在错误严重的情况下具有自动退出总线的功能;
(5) 报文不包含源地址或目标地址,仅用标志符来指示功能信息和优先级信息。
3 CAN的技术规范
(1) 帧类型
在CAN总线中,有四种不同的帧类型[4][5]:
·数据帧(Data Frame) 数据帧带有应用数据;
·远程帧(Remote Frame) 通过发送远程帧可以向网络请求数据,启动其他资源节点传送他们各自的数据,远程帧包含6个不同的位域:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。仲裁域中的RTR位的隐极性表示为远程帧;
·错误帧(Error Frame)错误帧能够报告每个节点的出错,由两个不同的域组成,第一个域是不同站提供的错误标志的叠加,第二个域是错误界定符;
·过载帧(Overload Frame)如果节点的接收尚未准备好就会传送过载帧,由两个不同的域组成,第一个域是过载标志,第二个域是过载界定符。
(2) 数据帧结构
数据帧由以下7个不同的位域(Bit Field)组成:帧起始、仲裁域、控制域、数据域、CRC域、应答域、帧结尾。其标准帧结构如表1所示:
表1 数据帧的结构[4]
·帧起始:标志帧的开始,它由单个显性位构成,在总线空闲时发送,在总线上产生同步作用。
·仲裁域:由11位标识符(ID10-ID0)和远程发送请求位(RTR)组成,RTR位为显性表示该帧为数据帧,隐性表示该帧为远程帧;标识符由高至低按次序发送,且前7位 (ID10-ID4)不能全为显性位。标识符ID用来描述数据的含义而不用于通信寻址,CAN总线的帧是没有寻址功能的。标识符还用于决定报文的优先权,ID值越低优先权越高,在竞争总线时,优先权高的报文优先发送,优先权低报文退出总线竞争。CAN总线竞争的算法效率很高,是一种非破坏性竞争。
·控制域:为数据长度码 (DLC3-DLC0),表示数据域中数据的字节数,不得超过8。
·数据域:由被发送数据组成,数目与控制域中设定的字节数相等,第一个字节的最高位首先被发送。其长度在标准帧中不超过8个字节。
·CRC域:包括CRC(循环冗余码校验)序列(15位)和CRC界定符(1个隐性位),用于帧校验。
l应答域:由应答间隙和应答界定符组成,共两位;发送站发送两个隐性位,接收站在应答间隙中发送显性位。应答界定符必须是隐性位。
·帧结束:由7位隐性位组成。
4 自订CAN高层协议
CAN的高层协议也可理解为应用层协议,是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。由于充电机系统的结构比较简单,网络规模也比较小。因此我们自行制订了一种简单而有效的高层通信协议。
技术规范CAN2.0A规定标准的数据帧有11位标识符,用户可以自行规定其含义,将所需要的信息包含在内。在充电机系统中,每一个节点都有一个唯一的地址,地址码和模块一一对应,通过拨码开关设定,总线上数据的传送也是根据地址进行的。由于本系统规模较小,节点数少于32个,因此为每个模块分配一个5位的地址码,同一系统中地址码不得重复,系统初始化时由外部引脚读入。将标识符ID9-ID5定义为源地址,ID4-ID0定义为目的地址,本协议中从模块的目的地址全填0,表示数据是广播数据,所有节点都可接收,主模块中目的地址根据要进行通信目的模块的地址确定。本通信协议的数据帧格式详见表2。
表2 数据帧格式
理论上源地址和目的地址的范围都是0~31,但由于CAN协议中规定标识符前7位不能全为显性位,所以源地址不能为31,这时实际节点只有31个(0~30)。因此每个系统所含的模块不超过31个。所以源地址和目的地址的范围缩减到0~30。同时上位监控机也要占用一个地址,因此系统中的电源模块不超过30个,设计时根据节点的优先权高低从小到大分配节点地址。ID10位定义为主模块识别码,该位主模块为隐性位,从模块为显性位,以保证主模块通信优先。模块的地址码决定发送数据的优先级。主模块向总线发送的数据有两种:一种是目的地址全部填0的广播数据;另一种是包含特定目的地址的非广播数据。
协议中一帧数据最多能传送8个字节,对于充电机控制系统来说已经足够用了,本系统只用到其中的前5个字节,其余3个节字可用于以后的扩展使用,因此未定义多帧传输方式。
从模块以广播形式向总线发送数据,同时回收自己发送的数据,若检测到所发送与所收到的数据不符,则立即重新发送上一帧数据。从模块发送信息的顺序由主模块的发出的指令决定,以免在总线通信繁忙时优先级较低的模块始终得不到总线通信权。指令的发送顺序按照各从模块的地址顺序进行,即地址较低的从模块首先获得指令,得以发送自己的地址码和电流、温度采样值。如发生冲突,则由CAN控制器自动根据模块的优先级调整发送顺序,在CAN的底层协议中有完善的优先级仲裁算法,因此应用层协议不必考虑此类问题。
对于每个模块,上电1s后若未收到任何通信信息,则按计算延时发送自身的地址码和温度电流采样值。延时时间的计算为[6]:
tdelay=T×ADD
其中:tdelay-为延时发送时间;
T-为单位延时时间常数,该值根据通信速率定义;可以取1个位周期,在波特率为100kHz时为10μs;
ADD-为模块地址编码。
主模块是ID10=0的模块,因此具有最高的优先级。上电后主模块首先向总线广播发送自身的地址码和温度电流采样值,然后即按顺序向从机发送指令,等待从机的回答。主机1秒钟后若未收到任何通信信息则认为该模块出错,发出报警。同样从机1s后若未收到主机任何通信信息则认为主机出错,按照源地址优先级由其余模块中地址最低的模块充当主模块,并将其ID10由1改为0,以获得最高通信优先权。
各模块检测到自身故障时,将切断输出,退出通信,并向上位机报警,同时发出声光报警。
5 结束语
本文中所介绍的CAN高层通信协议,结构简单、使用灵活、可靠性极高,实现也比较容易。很适合在节点数不多、通信可靠性要求高、控制结构较简单的小型控制系统中应用,具有一定的实用价值
H. 汽车单片机和CAN总线(汽车维修与检测)
随着汽车电子装置的不断增多,采用串行总线实现多路传输,组成汽车电子网络,是一种既可靠又经济的做法。
在最初的传统汽车电路中,动力总成模块与车身模块的连接都是点对点的连接,这样线路会日益复杂,线路的增加,也会导致汽车故障率的增加。
后来CAN总线在汽车上使用越来越广泛。所谓多路传输,指在计算机局域网中,将多种信息混合或交叉通过一个通信信道传送的方式。一个具有多路传输功能的网络允许多个计算机同时对它进行访问。
CAN(多路传输技术)应用于汽车上,可以使得布线更加简化,成本降低,电控单元之间交流更加简单和快捷,更少的传感器数目,实现信息资源共享。
多路传输通信网络应用于多模块操作系统上。模块由普通双绞线相互连接,并使用数据链接插口作为诊断接口。信息的交换以类似于电话合用线的方式进行,模块之间使用信息及专用的企业标准协议进行通信。信息内容涉及控制、状态或诊断信息以及运行参数等。双绞线具有提供冗余备份的优点,即当一条线路中断时,可由另一条线路保证系统运行。而且,双绞线降低了外界对多路通信网络的电子干扰,也降低了多路通信网络自身产生的电子干扰。
我们来看下如何用示波器来测量汽车的CAN总线信号,首先找到汽车的OBD接口
I. can总线互连的时候需要接地线吗
1.采用阻抗匹配、低衰减的RS485专用总线电缆(专利号:201020559128.9)更有利于保证通信。一般推荐如下:
非铠装双绞屏蔽型电缆STP-120Ω(forRS485&CAN)onepair20AWG,电缆外径7.7mm左右。适用于室内、管道及一般工业环境。使用时,屏蔽层一端接地!
非铠装双绞屏蔽型电缆STP-120Ω(forRS485&CAN)onepair18AWG,电缆外径8.2mm左右。适用于室内、管道及一般工业环境。使用时,屏蔽层一端接地!
铠装双绞屏蔽型电缆ASTP-120Ω(forRS485&CAN)onepair18AWG,电缆外径12.3mm左右。可用于干扰严重、鼠害频繁以及有防雷、防爆要求的场所。使用时,建议铠装层两端接地,最内层屏蔽一端接地!
CC-Link的总线电缆是特性阻抗为110±10Ω的3芯绞合屏蔽电缆,国产型号规格:STP-110Ω(forCANopen&CC-Link)3C×20AWG,使用时,屏蔽层应只在一端接地!
2.传输距离超过300米应加终端电阻(一般为120Ω)。
3.变频器、动力电缆、变压器、大功率电机等往往伴随着低频干扰,而这种干扰是用高导电率材料做屏蔽层的电缆无法解决的,包括原装的进口电缆。只有用高导磁率材料(如钢带、钢丝)做的屏蔽层才能有效抑制低频干扰。
最常用的方法就是给电缆套上钢管或直接采用高导磁率材料制成的铠装型电缆——ASTP-120Ω(forRS485&CAN)onepair18AWG.
户外敷设电缆防雷很重要!雷电的等效干扰频率在100k左右,也属于低频干扰。
《GB50057-94建筑物防雷设计规范》第6.3.1条:......在需要保护的空间内,当采用屏蔽电缆时其屏蔽层应至少在两端并宜在防雷区交界处做等电位连接,当系统要求只在一端做等电位连接时,应采用两层屏蔽,外层屏蔽按前述要求处理。
J. 51单片机与51单片机如何用CAN总线连接通讯急啊!!
CAN_H跟CAN_H接呗,CAN_L对CAN_L,地可接可不接。但是要保证两边都接了120欧姆的终端电阻。