新闻中心

EEPW首页>嵌入式系统>设计应用> 基于Microchip单片机及收发器实现的低成本LIN总线

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

作者: 时间:2010-08-31 来源:网络 收藏

  4.2 软件实现

  4.2.1 主节点

  主节点完全按照LIN规范实现。主节点的任务就是发送报文头和发送接收数据,实现一个网关的作用。另外,的剩余功能,可以用来做一些A/D和开关量的采集,还可以驱动一些蜂鸣器、小电机或者LED和LCD等器件。主节点发送流程如图5所示。


  LIN总线的通信可以通过配置的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]。


上一页 1 2 3 下一页

关键词:单片机

评论


相关推荐

技术专区

关闭