0

关于投票
St7920中文字库LCD驱动控制器资料

St7920中文字库LCD驱动控制器:

rar          rar

中文字库液晶显示模块使用手册:

pdf

12232系列说明书:

pdf

HS12232-9带汉字库LCD模块WINAVR C++演示程序

http://hotpower.21ic.org/user1/46/archives/2006/8948.html

12232-9/12864通用程序
http://hotpower.21ic.org/user1/46/archives/2005/529.html

 

系统分类: 单片机
用户分类: 串行数据通讯
标签: 无标签
来源: 整理
发表评论 阅读全文(770) | 回复(0)

0

关于投票
我采用具有总线保护的接法
hotpower 发表于 2007-1-13 09:47 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

48楼: 我采用具有总线保护的接法

图纸在单位,没法上传.

我是很早自己做的总线,速率在20KBPS以上.

和下图的LINBUS有些区别.

1.采用总线上发送'1',空闲时高阻.
  即Vbat前加三极管控制.
2.总线电阻各取100p,提高发送速率.
3.接收电路经过非门后接入.(2.2V以上翻转)

由于现场环境总线上可能出现认为的高压,若采用OC门驱动方式,即低电平
驱动总线,那么在发送'0'时,很容易烧毁接口.
采用发送高控制后,就不怕烧毁IO了,因为上拉的是1.2K左右的电阻,又无低电平
大电流输出,故其"线与"就变成了总线上的多个'1'信号.

当然这样做也是有缺点的,因为它不如OC门放电迅速.因为它无放电通道.
优点是无0.8Vbat和0.2Vbat之分,只要总线上有2.2V以上电平信号即可翻转.

实际应用效果还不错,刚好最近有个项目要用单总线,准备再完善一些.

系统分类: 通信网络
用户分类: 串行数据通讯
标签: 无标签
来源: 原创
发表评论 阅读全文(824) | 回复(1)

0

关于投票
低成本LIN总线协议在汽车网络中的应用(转帖)

低成本LIN总线协议在汽车网络中的应用
上网时间:2004年11月01日

当前汽车应用开发人员正面临着众多设计挑战,由于现代汽车增加了更多电子功能,对低功耗和更小印刷电路板的需求也越来越强烈,所有这些都表明在诸如车身控制和传动系统等应用领域中这样的特性将日益重要。

如今汽车中的绝大多数电子控制单元互相之间都有连接,但汽车制造商对不同的应用使用了不同的总线系统。例如传动系统和制动系统多数通过控制器局域网络(CAN)来联系,而通讯不太密集的应用(如车窗升降电机和控制车镜的按键)则可能使用局域互联网络(LIN)协议。本文将论述怎样利用LIN总线来满足汽车业所需要的新增电子功能,并同时确保低功耗以及使用较小面积的PCB。

图1:LIN在汽车上的典型应用领域。

LIN协议

LIN协议由欧洲汽车制造商协会设计,是一种低成本短距离低速网络。它旨在传送开关设置和传感器输入等状态的变化,并对这类变化做出响应,因此可用于传送发生时间约为几分之一秒的事件,并不适用于汽车应用中的高速事件(如引擎管理)。LIN的另一个目的是利用该协议的简单性降低系统成本,以便能够方便地在质优价廉的8位单片机中实现。LIN总线协议的最新版本是V2.0,可以在LIN联盟的网站(www.lin-subbus.de)上得到。

LIN支持单线双向通讯,采用廉价的由RC振荡器驱动的单片机,可省掉晶体振荡器或陶瓷振荡器的费用。虽然LIN降低了系统总成本,但在时间和软件上却要付出代价,每条报文都必须经过一个自动确定波特率的过程。LIN协议支持最高20kbps传输速率,以及一个低功耗休眠模式,此时总线将被关闭,不再消耗汽车电池。采用8位单片机并结合外部或内部RC有助于降低系统成本,并减少PCB实际的面积。

图1显示了LIN在汽车中的典型应用。总线上的地电位信号为显性状态,只要任何节点将总线电压拉低,就会出现这一状态。当总线处于电池电压且所有节点都使总线处于悬空状态时,会出现隐性状态。在空闲状态下,总线通过上拉电阻悬空为高电平。

LIN总线的工作电压范围为9~18V,但总线上所有部件都必须能够承受40V电压。通常,单片机通过线路驱动器/接收器与总线隔离,这种方案下总线每个节点都端接为VBAT电平,主节点通过1kΩ电阻端接,从节点则通过20-47kΩ的电阻端接。总线最大设计长度为40米。

每个字节都利用起始位和停止位作为头尾标志位。起始位与空闲状态相反,为0,而停止位则等同空闲状态(即1)。在每个字节内,数据从最低位(LSB)开始传送。

报文协议

图2:LIN网络在车镜控制上的应用。

主节点用于控制LIN总线,它通过对从节点进行查询,将数据发布到总线上。从节点仅在主节点的命令下发送数据,从而在无需仲裁的情况下实现双向通讯。报文的传送是在主节点发出一个同步间隔脉冲后开始的,然后跟随的是同步字段和报文字段。主节点通过在每个报文的开始处发送同步字段可设定整个总线时钟。

每条报文的第二字节是一个标识符字节,它告诉LIN总线随后将发送的是什么数据,并指明哪个节点应该应答及应答的长度是多少。对于给定的命令,只有一个从节点可以应答。

从节点仅在主节点的控制下在LIN总线上发送数据。一旦数据发布到总线上,任何节点都可以接收该数据。因此,一个从节点向其它从节点发送数据无需主节点干预。

由于LIN协议使用低成本RC振荡器,因此从节点必须检测主节点每次发送的波特率,并调整为当前速率,所以每次通讯都以同步字段开始,它是一个0、1交替出现的字节。

同步字段之后是标识符字段,它告诉LIN总线接着出现的内容。该字段进一步分为三个子字段:4位(0-3)用于对总线上的设备进行寻址;2位(4-5)指明此后报文的长度,最后2位(6-7)用于奇偶校验。

除休眠命令之外,LIN协议没有定义任何报文的内容,其它命令是在具体应用中定义的。

错误检测

以下错误必须在每一节点处进行检测和计数,一旦出现错误,该命令就要被丢弃,并记录这一错误事件。

位错误——正在发送的节点应该对希望发送的数据与总线上实际出现的数据进行比较,控制器必须等待足够时间以确保总线对发出的数据做出反应,然后才可测试这一数据。假定总线响应信号的最小边沿变化速率为1V/μs,最大总线电压为18V,那么发送器应等待18μs后才可进行测试。

校验和错误——每条报文的数据内容都受到校验和字节的保护,该字节是数据字节相加后取256模的余数再取反的结果。

奇偶校验——命令字节使用2个奇偶位来保护其它6个数位,这两个数位在接收后要重新计算,再与接收结果进行比较。

该协议没有定义直接错误报告机制,然而由于每个从节点都应自行追踪各自的错误,因此主节点可利用正常的报文协议来请求获得错误状态。

LIN和系统要求

那么LIN是如何满足对低功耗、低系统成本、功能增加甚至减少汽车总重量的要求呢?

首先它可以方便地用软件实现LIN协议,该协议不需要单片机给予过多的硬件支持,通过使用一个简单的USART或增强型USART就可以实现。USART支持诸如自动波特率检测等功能,这意味着在LIN应用中可以使用一个简单的质优价廉的8位单片机。还有一个优点就是LIN在协议层不需要复杂的操作系统,不多的软件开销还使得设计人员能够选择存储器容量较小的单片机。

如何运用像LIN这样的简单协议对汽车进行控制呢?以车镜控制为例,许多汽车的车镜相互之间仍是硬连接,或者在豪华型汽车中通过CAN这样的昂贵协议连接,其实利用LIN总线就可以方便地将左右车镜和四向仪(可以改变车镜位置的四方向开关)连接起来。在典型的LIN方案中,四向仪是主节点,两个车镜是从节点。四向仪读取按键的状态,将报文发送给相应的车镜。

那么使用LIN能够为诸如车镜控制等应用增加新功能吗?回答是不需要额外连线,就可以方便地添加其它功能,如集成式转向信号、集成式照地灯或车镜加热器。这里车镜只需要与地电位、VBAT和LIN总线连接,需要改动的只有主节点,它必须知道要实现哪些车镜功能。

图2说明了用于车镜应用的LIN网络。为了更清楚地理解这个例子,让我们更深入地研究一下。该网络中的主节点是一个PIC18F4680 8位闪存单片机,它读取车镜选择开关和四向仪,还通过CAN总线接收报文。从CAN总线发送给主控LIN节点的报文包括左右转向信号和开门,接收到来自CAN总线的报文后,主节点通过LIN总线向从节点发出命令,如“左车镜上升或左车镜下降”。

在此例中,从节点由PIC16F688 8位闪存单片机组成。PIC16F688具有一个集成的LIN收发器和一个增强型USART,其中USART能自动执行自动波特率检测。从节点收到报文并利用步进电机使车镜上升或下降。假设车镜模块没有集成式转向信号等其它功能,当从节点从LIN总线上接收到一条诸如“左转向信号”的报文时,它就会忽略这一报文或者触发I/O用于转向信号(这部分内容已超出本文讨论范围)。触发I/O的好处是无论车镜是否集成了转向信号都可应用相同的软件,只需要对硬件做适当更改即可运行,也就是说功能不同的各种车镜都可以使用同一软件。

LIN软件

LIN主节点有三个主要的软件进程,第一个进程接收CAN报文,并将其转变为LIN报文;第二个进程读取四向仪和车镜选择开关的状态;第三个进程向从节点发出报文。

如果主节点从CAN总线上接收到“左转向信号打开”的报文,它会将该报文转变成LIN协议,并发送给适当的LIN总线节点(在本例中为左车镜)。对PIC18F4680中的CAN控制器进行编程后,它可以只接收来自CAN总线的特定报文,而不会有任何其它软件开销,这一硬件过滤方式使CAN总线的通讯只有极少软件工作量。PIC18F4680也集成了一个可用于LIN总线通讯的USART,由于LIN总线主节点不必执行自动波特率检测,因此它能够通过USART发送整条报文。

车镜从节点有n+1个进程,其中n是车镜中集成的功能数目。如果只要控制车镜的上下左右,软件进程就只有2个,第一个是收发进程,第二个是车镜控制进程,主要驱动步进电机,其它可能的进程有“照地灯开”和“左转向信号开”。因为PIC16F688有一个增强型USART,可实现波特率检测,所以LIN通讯的软件开销非常少,这就为实现其它功能(包括检修)留出了很大余地。

本文小结

正如前面所述,LIN总线能够增加功能和降低成本,可以用软件编程实现各种特性,也可以通过软硬件功能增添新的特性,这样不同的模块就都可以用一个硬件或一个软件平台实现。LIN总线的灵活性有利于降低生产和软/硬件维护方面的成本。因为LIN总线非常简单,所以用质优价廉的8位单片机就可以实现,从而降低系统总成本。

Thomas Schmidt

汽车产品部资深应用工程师

美国微芯科技公司

系统分类: 通信网络
用户分类: 串行数据通讯
标签: 无标签
来源: 转贴
发表评论 阅读全文(876) | 回复(0)

0

关于投票
基于普通单片机的LIN协议实现方案(转帖)
                           基于普通单片机的LIN协议实现方案

1 概述
    LIN协议是新出现的一种新型低成本串行通信总线,其全称是Local Interconnect Network,即局部互联网络。它最开始出现于汽车行业,是为解决汽车智能化和网络化的发展要求和降低汽车制造成本的矛盾而提出来的一种串行总线协议,主要用于车门、车灯等需要简单控制但又要求智能控制的场合。它的主要特点是:采用单个主控制器/多从设备通信模式;基于普通UART/SCI接口硬件实现,协议简单;网络传输速率不高,最高可达20kb/s。由于LIN协议的突出特点是协议对硬件的依赖程度低,可以基于普通单片机的通用串口等硬件资源以软件方式实现,成本低廉,因此可广泛应用于汽车行业以外的其他领域,如智能家庭网络内部的数据传输、节点控制等场合。
    本文依据对LIN协议的分析,对其协议在普通单片机上的具体实现,即如何利用单片机有限的硬件资源实现LIN的主节点、从节点,进行可行性方案的研究、探讨。


2 LIN协议的简介
    LIN协议的最新版本是LIN Specification Package Revision 2.O,包括协议规范、节点诊断配置规范、物理层规范、API规范等几个方面,从硬件配置到节点配置语言都作了详细的规定。下面就其协议规范作一简要介绍和分析。
    LIN的数据传输是采用报文帧的形式进行的。一个完整的报文帧由1个主机节点发送的报文头(header)和1个主机或从机节点发送的响应(response)组成,如图1所示。报文头包括1个间隔场(break)、1个同步字节场(synch)和1个保护标识符字节场PID(Protected IDentifier)。间隔场是由持续了至少13个位时的显性电平和至少1个位时的隐性电平组成;由主机节点产生,标志着一次数据通信过程报文帧的开始。同步字节场包含时钟同步信息。同步字节场的格式是0x55,表现在8个位定时中有5个下降沿,即隐性跳变到显性的边沿。

点击看大图


    所有从机节点在主机节点发布报文头之后都应能检测到间隔场的存在,并且在正确地接收同步字节场后,准确计算出主机节点将要发送数据的波特率,并以此波特率作为下一步要发送或接收数据的波特率的设定值。这样,经过了