微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Microchip单片机及收发器实现的低成本LIN总线

基于Microchip单片机及收发器实现的低成本LIN总线

时间:08-31 来源:互联网 点击:

线的通信可以通过配置单片机的EUSART来实现。每次通信都由主节点启动,此处不考虑从节点到从节点的通信。总线的配置也由主节点来实现,具体波特率可以通过波特率控制寄存器来实现。这里采用9 600的波特率。

标识符不是一个节点的地址,而是一个报文的描述符。当主节点发送一个0x3C的命令后,再发送8 B的00H,总线就进入休眠模式。在休眠模式下,总线处于空闲状态,因此任何一个从节点都可以唤醒总线。

主节点采用高精度的石英晶振作为时钟源,可以产生低误差的时钟信号。在这里,要把主节点设置为异步半双工通信模式,8 bit数据模式。时钟选择为内部时钟。

由于EUSART有“发送间隔字符位(SENDB)”,可以在每次发送数据前发送同步间隔字符,这样可以省掉不少软件开销,使单片机可以致力于其他逻辑的运算。

4.2.2 从节点

从节点不需要系统配置的信息,所有从节点接收所有报文,然后再判断是否需要执行。

从节点不需要外接石英晶振,可以用单片机内部自带的RC震荡器实现。MICROCHIP的中端8位单片机大多数都内带高精度的RC震荡器,在常温下(25℃),经过校准可以达到±1%的精度。

每个单片机在出厂时都经过校准,并把校准字写在Flash空间的最后一位。在程序开始运行时,会把校准值装载到W寄存器里。在程序的第一条指令中执行MOVWF OSCCAL,即可将W寄存器里的值送到内部RC震荡器的校准寄存器里,从而实现校准。

从节点先检测总线电平,当长时间的隐性电平结束,出现大于10个位定时的显性电平后,开始数5个下降沿的时间,用时间值除以8,就可以算出波特率。然后从总线上读取数据,解码ID,处理响应。

EUSART支持波特率的自动检测和校准,可以使软件代码大量简化。从节点可以在总线空闲时进入休眠状态,当从节点检测到主节点发出的同步间隔时,可以从休眠状态唤醒。

当从节点被其他外部中断唤醒时(例如A/D转换完成,外部IO电平变化等),从节点可以唤醒休眠的总线。

如果从节点的功能比较简单,工作电流比较小,可以通过收发器MCP2021的参考电压输出端来供电。MCP2021有两种型号,参考电压的输出分别为5 V和3.3 V,适应5 V和3.3 V的单片机。这个参考电压的输出电流最大为50 mA,所以不适合工作电流比较大的场合[3-4]。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top