周立功单片机 MP157数据手册(中文)-V1.00
- 格式:pdf
- 大小:1.56 MB
- 文档页数:20
i CAN系列功能模块用户手册 V1.3广州周立功单片机发展有限公司2006年02月15日目录第1章版权信息 (1)第2章功能特点 (2)第3章硬件参数 (3)3.1产品外观 (3)3.2 工作原理 (3)3.3 模块的基本参数 (4)3.4 典型应用 (4)第4章设备安装 (5)4.1 硬件安装 (5)4.2 接口说明 (5)4.3 供电电源 (6)4.4 CAN波特率和MAC ID设定 (6)4.5 信号指示灯 (8)4.6 CAN总线连接 (9)4.6.1 模块的电源和通讯线的连接 (10)第5章i CAN系列功能模块的使用说明 (11)5.1 i CAN-4050非隔离DI/DO功能模块 (11)5.1.1 主要技术指标 (11)5.1.2 模块接口说明 (12)5.2 i CAN -4017 AI功能模块 (14)5.2.1 主要技术指标 (14)5.2.2 模块接口说明 (14)5.3 iCAN –2404 继电器输出控制模块 (16)5.3.1 主要技术指标 (16)5.3.2 模块接口说明 (16)5.4 i CAN-4400模拟量输出模块 (18)5.4.1 主要技术指标 (18)5.4.2 模块接口说明 (18)5.5 i CAN –5303 RTD功能模块 (20)5.5.1 主要技术指标 (21)5.5.2 模块接口说明 (21)5.6 iCAN-6202热电偶输入模块 (24)5.6.1 主要技术指标 (24)5.6.2 模块接口说明 (25)5.7 iCAN-7408计数器模块 (27)5.7.1 主要技术指标 (27)5.7.2 模块接口说明 (27)第6章i CAN系列功能模块通讯协议 (30)6.1 通讯协议报文的格式 (30)6.2 模块通讯连接的建立 (33)6.2.1 建立连接 (33)6.2.2 删除连接 (34)6.3 模块通讯波特率的修改 (35)6.3.1 节点MACID设置 (35)6.3.2 节点波特率设置 (36)6.4 复位模块 (36)6.5 i CAN -4050 DI/DO功能模块的通讯 (37)6.5.1 连接的建立 (37)6.5.2 读开关量输入 (37)6.5.3 写开关量输出 (37)6.5.4 设置安全输出 (37)6.6 i CAN -4017 AI功能模块的通讯 (38)6.6.1 连接的建立 (38)6.6.2 读模拟量输入 (38)6.6.3 设置测量范围 (39)6.7 i CAN-2404 DO功能模块的通讯 (40)6.7.1 连接的建立 (40)6.7.2 写继电器输出 (40)6.7.3 设置安全输出 (40)6.8 i CAN -4400 AO功能模块的通讯 (41)6.8.1 连接的建立 (41)6.8.2 写模拟量输出 (41)6.9 设置安全输出 (42)6.10 i CAN –5300RTD功能模块的通讯 (43)6.10.1 连接的建立 (43)6.10.2 读模拟量输入 (43)6.10.3 设置测量类型或上下限值 (43)6.11 3路输出DO的使用 (44)6.12 iCAN-6202热电偶模块的通讯 (45)6.12.1 建立连接 (45)6.12.2 读温度值 (45)6.12.3 模块输入通道配置 (46)6.12.4 模块输出通道配置 (48)6.12.5 用户控制DO通道 (49)6.12.6 定时循环传送 (49)6.12.7 温度超限报警 (50)6.13 iCAN-7408计数器模块的通讯 (50)6.13.1 建立连接 (50)6.13.2 计数器配置 (50)6.13.3 输出通道控制 (53)6.13.4 定时循环传送 (54)6.13.5 计数器溢出报警 (54)第7章iCAN测试软件 (56)7.1 系统配置 (56)7.2 从站设置 (57)7.3 系统运行 (58)第8章产品服务 (59)8.1 保修期 (59)8.2 保修政策包括的范围 (59)8.3 保修政策不包括的范围 (59)8.4 技术支持 (59)第1章版权信息i CAN系列功能模块及相关软件均属广州周立功单片机发展有限公司所有,其产权受国家法律绝对保护,未经本公司授权,其他公司、单位、代理商及个人不得非法使用和拷贝,否则将受到国家法律的严厉制裁。
PCI-51XX智能CAN接口卡用户手册V1.2广州周立功单片机发展有限公司2003年11月26日目录一、版权信息--------------------------------------------------------------1二、功能特点--------------------------------------------------------------1三、硬件参数--------------------------------------------------------------13.1外观---------------------------------------------------------------13.2参数---------------------------------------------------------------13.3软件支持-----------------------------------------------------------23.4产品清单-----------------------------------------------------------2四、设备安装--------------------------------------------------------------24.1硬件安装-----------------------------------------------------------24.2 D B9针型插座引脚定义----------------------------------------------24.3随卡软件包的安装--------------------------------------------------34.3.1 安装软件包-------------------------------------------------------------------------34.3.2 安装驱动程序----------------------------------------------------------------------34.3.2.1 在WINXP系统下安装------------------------------------------------------------34.3.2.2 在WIN2000系统下安装---------------------------------------------------------74.3.2.3 在Win98/Me系统下安装--------------------------------------------------------7五、 接口函数-------------------------------------------------------------12六、测试工具-------------------------------------------------------------12七、常见问题-------------------------------------------------------------12八、产品服务-------------------------------------------------------------128.1 保修期--------------------------------------------------------------128.2 保修政策包括的范围----------------------------------------------------128.3 保修政策不包括的范围--------------------------------------------------128.4 软件升级---------------------------------------------------------------------------138.5 技术支持---------------------------------------------------------------------------13附录A、ZLGCAN产品简介----------------------------------------------------14 附录B、CAN2.0B协议帧格式-------------------------------------------------16 附录C、SJA1000标准波特率-------------------------------------------------17一、版权信息PCI-51XX系列智能CAN接口卡及相关软件均属广州市周立功单片机发展有限公司所有,其产权受国家法律绝对保护,未经本公司授权,其他公司、单位、代理商及个人不得非法使用和拷贝,否则将受到国家法律的严厉制裁。
第1章概述1.1 简介LPC111x是基于ARM Cortex-M0的微控制器,可用于高集成度和低功耗的嵌入式应用。
ARM Cortex-M0是第二代内核,它提供了一个简单的指令集,可以实现确定性行为。
LPC111x CPU的工作频率高达50MHz。
LPC111x的外设包括:高达32kB的Flash、8kB的数据存储器、一个Fast-mode Plus的I2C接口、一个RS-485/EIA-485 UART、2个SSP接口、4个通用定时器,以及多达42个通用I/O引脚。
1.2 特性z ARM Cortex-M0处理器工作在50MHz的频率下;z ARM Cortex-M0处理器内置有嵌套向量中断控制器(NVIC);z32kB(LPC1114)、24 kB(LPC1113)、16kB(LPC1112)或8kB(LPC1111)的片内Flash程序存储器;z高达8kB的静态RAM;z通过片内Bootloader软件来实现在系统编程(ISP)和在应用中编程(IAP);z串行接口:-UART:可产生小数波特率,带有内部FIFO,支持RS-485/EIA-485,具有moderm 控制;-2个SSP控制器,具有FIFO和多协议功能(LQFP48和PLCC44封装只有第二个SSP有该功能);-I2C总线接口支持全部I2C总线规范和Fast-mode Plus模式,数据速率高达1Mbit/s,具有多地址识别和监控模式;z其它外设:-多达42个通用I/O(GPIO)引脚,上拉/下拉电阻可配置;-一个引脚具有20mA的高电流驱动能力;-2个I2C总线引脚在Fast-mode Plus模式下具有20mA的高电流汲入能力;-4个通用定时器/计数器,共有4个捕获输入和13个比较输出;-看门狗定时器(WDT);-系统节拍定时器;z串行调试;z集成的PMU(Power Management Unit)在睡眠、深度睡眠和深度掉电模式下自动调节内部稳压器,将功耗降至最低;z3种节能模式:睡眠、深度睡眠和深度掉电;z单个3.3V电源(2.0V~3.6V);z10位ADC,在8个引脚之间实现输入多路复用;z GPIO引脚可以用作边沿和电平触发的中断源;z带分频器的时钟输出功能可以反映主振荡器时钟、IRC时钟、CPU时钟或看门狗时钟;z处理器通过一个高达13个功能引脚的专用起始逻辑从深度睡眠模式中唤醒;z掉电检测有4个中断阈值和1个强制复位阈值;z上电复位(POR);z 晶体振荡器的工作范围为1MHz~25MHz ;z 12MHz 内部RC 振荡器可调节到1%的精度;可以选择用作一个系统时钟; z PLL 允许CPU 无需使用高频晶体而工作在最大CPU 速率下。
个人电脑已经是64位了,您还在使用8位微控制器吗?尽管一般情况下嵌入式系统对CPU处理能力的要求比个人电脑(对CPU处理能力的要求)低,但随着人们生活的提高和技术的进步,嵌入式系统对CPU处理能力的要求也稳步的提高,大量高速的与MCS51体系结构兼容的微控制器的出现就证明了这一点。
但8位微控制器受限于体系结构,处理能力的提高始终有限。
而16位系统在性能上与8位机相比始终没有太大优势,成本上与32位系统相比也没有什么优势,未来一段时间嵌入式微控制器的发展方向必然是32位系统。
基于ARM体系结构的32位系统占领了32位嵌入式系统的大部分分额,但长期以来,基于ARM体系结构的32位系统仅在嵌入式式系统的高端(通讯领域、PDA)等场合使用,要么以专用芯片的面貌出现,要么以位处理器的庙貌出现,并没有出现性价比高的通用的微控制器。
PHILIPS发现了这个空当,推出了性价比很高LPC2000系列微控制器,让更多的嵌入式系统具有32位的处理能力。
这也预示着32位系统即将成为嵌入式系统的主流。
基于ARM体系结构的芯片在中国推广已经有好几年了,关于ARM的图书也出了不少。
关于ARM的图书主要有以下几类:1.关于ARM内核的图书,主要读者是芯片设计者,内容主要是介绍芯片设计的。
2.芯片应用类图书,主要是芯片的生产商或代理商编写,主要读者为应用工程师。
3.开发板类图书,主要介绍相应的ARM开发板,给应用者一些参考。
以上3类图书的侧重点都不是ARM应用开发教学,用于大学本科教学不太适合。
为了方便高等院校教学方便,笔者编写了这本教材。
不过,因为嵌入式系统牵涉的知识太广,一本教材无法深入论述。
为此,笔者还会推出多本被套图书以便学生知识扩展。
第1章嵌入式系统概述 (1)1.1嵌入式系统 (1)1.1.1 现实中的嵌入式系统 (1)1.1.2 嵌入式系统的概念 (2)1.1.3 嵌入式系统的未来 (2)1.2嵌入式处理器 (2)1.2.1 简介 (2)1.2.2 分类 (3)1.3嵌入式操作系统 (4)1.3.1 简介 (4)1.3.2 基本概念 (5)1.3.3 使用实时操作系统的必要性 (8)1.3.4 实时操作系统的优缺点 (8)1.3.5 常见的嵌入式操作系统 (8)第2章嵌入式系统工程设计 (14)2.1嵌入式系统项目开发生命周期 (14)2.1.1 概述 (14)2.1.2 识别需求 (15)2.1.3 提出方案 (17)2.1.4 执行项目 (19)2.1.5 结束项目 (21)2.2嵌入式系统工程设计方法简介 (22)2.2.1 由上而下与由下而上 (22)2.2.2 UML系统建模 (22)2.2.3 面向对象OO的思想 (23)第3章ARM7体系结构 (25)3.1简介 (25)3.1.1 ARM (25)3.1.2 ARM的体系结构 (25)3.1.3 ARM处理器核简介 (26)3.2ARM7TDMI (27)3.2.1 简介 (27)3.2.2 三级流水线 (28)3.2.4 存储器接口 (28)3.3ARM7TDMI的模块和内核框图 (29)3.4体系结构直接支持的数据类型 (31)3.5处理器状态 (32)3.6处理器模式 (32)3.7内部寄存器 (33)3.7.1 简介 (33)3.7.2 ARM状态寄存器集 (33)3.7.3 Thumb状态寄存器集 (35)3.8程序状态寄存器 (37)3.8.1 简介 (37)3.8.2 条件代码标志 (38)3.8.3 控制位 (38)3.8.4 保留位 (39)3.9异常 (39)3.9.1 简介 (39)3.9.2 异常入口/出口汇总 (39)3.9.3 进入异常 (40)3.9.4 退出异常 (41)3.9.5 快速中断请求 (41)3.9.6 中断请求 (41)3.9.7 中止 (41)3.9.8 软件中断指令 (42)3.9.9 未定义的指令 (42)3.9.10 异常向量 (42)3.9.11 异常优先级 (43)3.10中断延迟 (43)3.10.1 最大中断延迟 (43)3.10.2 最小中断延迟 (44)3.11复位 (44)3.12存储器及存储器映射I/O (44)3.12.1 简介 (44)3.12.2 地址空间 (44)3.12.3 存储器格式 (45)3.12.4 未对齐的存储器访问 (46)3.12.5 指令的预取和自修改代码 (47)3.13寻址方式简介 (51)3.14ARM7指令集简介 (52)3.14.1 简介 (52)3.14.2 ARM指令集 (52)3.14.3 Thumb指令集 (54)3.15协处理器接口 (56)3.15.1 简介 (56)3.15.2 可用的协处理器 (56)3.15.3 关于未定义的指令 (57)3.16调试接口简介 (57)3.16.1 典型调试系统 (57)3.16.2 调试接口 (58)3.16.3 EmbeddedICE-RT (58)3.16.4 扫描链和JTAG接口 (59)3.17ETM接口简介 (59)第4章ARM7TDMI(-S)指令系统 (61)4.1ARM处理器寻址方式 (61)4.2指令集介绍 (64)4.2.1 ARM指令集 (64)4.2.2 Thumb指令集 (90)第5章LPC2000系列ARM硬件结构 (112)5.1简介 (112)5.1.1 描述 (112)5.1.2 特性 (112)5.1.3 器件信息 (113)5.1.4 结构概述 (113)5.2引脚配置 (114)5.2.1 引脚排列及封装信息 (114)5.2.2 LPC2114/2124的引脚描述 (116)5.2.3 LPC2210/2212/2214的引脚描述 (120)5.2.4 引脚功能选择使用示例 (126)5.3存储器寻址 (126)5.3.1 片内存储器 (126)5.3.3 存储器映射 (127)5.3.4 预取指中止和数据中止异常 (131)5.3.5 存储器重映射及引导块 (132)5.3.6 启动代码相关部分 (134)5.4系统控制模块 (136)5.4.1 系统控制模块功能汇总 (136)5.4.2 引脚描述 (137)5.4.3 寄存器描述 (137)5.4.4 晶体振荡器 (138)5.4.5 复位 (139)5.4.6 外部中断输入 (142)5.4.7 外部中断应用示例 (145)5.4.8 存储器映射控制 (146)5.4.9 PLL(锁相环) (148)5.4.10 VPB分频器 (153)5.4.11 功率控制 (154)5.4.12 唤醒定时器 (156)5.4.13 启动代码相关部分 (156)5.5存储器加速模块(MAM) (158)5.5.1 描述 (158)5.5.2 MAM结构 (159)5.5.3 MAM的操作模式 (160)5.5.4 MAM配置 (161)5.5.5 寄存器描述 (161)5.5.6 MAM使用注意事项 (162)5.5.7 启动代码相关部分 (162)5.6外部存储器控制器(EMC) (163)5.6.1 特性 (163)5.6.2 概述 (163)5.6.3 引脚描述 (164)5.6.4 寄存器描述 (164)5.6.5 外部存储器接口 (166)5.6.6 典型总线时序 (168)5.6.7 外部存储器选择 (168)5.6.8 启动代码相关部分 (169)5.7引脚连接模块 (170)5.7.1 介绍 (170)5.7.2 寄存器描述 (170)5.7.3 引脚功能控制 (173)5.7.4 启动代码相关部分 (173)5.8.1 特性 (175)5.8.2 描述 (175)5.8.3 结构 (176)5.8.4 寄存器描述 (177)5.8.5 中断源 (181)5.8.6 VIC使用事项 (183)5.8.7 VIC应用示例 (184)5.8.8 启动代码相关部分 (185)5.9GPIO (186)5.9.1 特性 (186)5.9.2 应用 (186)5.9.3 引脚描述 (187)5.9.4 寄存器描述 (187)5.9.5 GPIO使用注意事项 (189)5.9.6 GPIO应用示例 (189)5.10UART 0 (189)5.10.1 特性 (189)5.10.2 引脚描述 (190)5.10.3 应用 (190)5.10.4 结构 (190)5.10.5 寄存器描述 (191)5.10.6 使用示例 (198)5.11UART1 (200)5.11.1 特性 (200)5.11.2 引脚描述 (200)5.11.3 应用 (201)5.11.4 结构 (202)5.11.5 寄存器描述 (203)5.12I2C接口 (211)5.12.1 特性 (211)5.12.2 应用 (211)5.12.3 引脚描述 (211)5.12.4 I2C接口描述 (211)5.12.5 I2C操作模式 (214)5.12.6 寄存器描述 (225)5.13SPI接口 (228)5.13.1 特性 (228)5.13.2 引脚描述 (228)5.13.3 描述 (229)5.13.5 寄存器描述 (235)5.14定时器0和定时器1 (237)5.14.1 描述 (237)5.14.2 特性 (237)5.14.3 应用 (238)5.14.4 管脚描述 (238)5.14.5 结构 (239)5.14.6 寄存器描述 (239)5.14.7 定时器举例操作 (244)5.14.8 使用示例 (245)5.15脉宽调制器(PWM) (247)5.15.1 特性 (247)5.15.2 引脚描述 (248)5.15.3 描述 (248)5.15.4 结构 (249)5.15.5 寄存器描述 (251)5.15.6 使用示例 (256)5.16A/D转换器 (258)5.16.1 特性 (258)5.16.2 描述 (258)5.16.3 引脚描述 (258)5.16.4 寄存器描述 (259)5.16.5 操作 (261)5.16.6 使用示例 (261)5.17实时时钟 (262)5.17.1 特性 (262)5.17.2 描述 (262)5.17.3 结构 (262)5.17.4 RTC中断 (263)5.17.5 闰年计算 (264)5.17.6 寄存器描述 (264)5.17.7 混合寄存器组 (265)5.17.8 完整时间寄存器 (267)5.17.9 时间计数器组 (268)5.17.10 报警寄存器组 (269)5.17.11 基准时钟分频器(预分频器) (269)5.17.12 RTC使用注意事项 (271)5.17.13 使用示例 (271)5.18看门狗 (274)5.18.2 应用 (274)5.18.3 描述 (274)5.18.4 结构 (275)5.18.5 寄存器描述 (275)5.18.6 使用示例 (277)5.19本章小结 (278)第6章接口技术与硬件设计 (280)6.1最小系统 (280)6.1.1 框图 (280)6.1.2 电源 (280)6.1.3 时钟 (284)6.1.4 复位及复位芯片配置 (284)6.1.5 存储器系统 (287)6.1.6 调试与测试接口 (288)6.1.7 完整的最小系统 (289)6.2片内外设 (291)6.2.1 GPIO(通用I/O) (291)6.2.2 UART、MODEM (295)6.2.3 I2C (298)6.2.4 SPI (304)6.3总线接口 (308)6.3.1 并行SRAM (308)6.3.2 并行FALSH (314)6.3.3 USB(D12)接口 (328)6.3.4 液晶接口 (332)6.3.5 网络接口 (341)6.4其它外设 (350)6.4.1 并行打印机接口 (350)6.4.2 CF卡及IDE硬盘接口 (356)第7章移植µC/OS-II到ARM7 (362)7.1µC/OS-II简介 (362)7.1.1 概述 (362)7.1.2 µC/OS-II的特点 (362)7.2移植规划 (363)7.2.1 编译器的选择 (363)7.2.2 任务模式的取舍 (363)7.3移植µC/OS-II (363)7.3.1 概述 (363)7.3.2 关于头文件includes.h和config.h (364)7.3.3 编写OS_CPU.H (365)7.3.4 编写Os_cpu_c.c文件 (366)7.3.5 编写Os_cpu_a.s (371)7.3.6 关于中断及时钟节拍 (374)7.4移植代码应用到LPC2000 (376)7.4.1 编写或获取启动代码 (376)7.4.2 挂接SWI软件中断 (376)7.4.3 中断及时钟节拍中断 (377)7.4.4 编写应用程序 (377)7.5本章小结 (379)第8章嵌入式系统开发平台 (380)8.1如何建立嵌入式系统开发平台 (380)8.1.1 使用平台开发是大势所趋 (380)8.1.2 建立开发平台的方法 (383)8.1.3 编写自己的软件模块 (384)8.2数据队列 (384)8.2.1 简介 (384)8.2.2 API函数集 (384)8.3串口驱动 (387)8.3.1 简介 (387)8.3.2 API函数集 (387)8.4MODEM接口模块 (389)8.4.1 简介 (389)8.4.2 MODEM的状态 (389)8.4.3 API函数集 (389)8.5I2C总线模块 (390)8.5.1 简介 (390)8.5.2 API函数集 (391)8.6SPI总线模块 (392)8.6.1 简介 (392)8.6.2 API函数集 (392)第1章嵌入式系统概述1.1 嵌入式系统经过几十年的发展,嵌入式系统已经在很大程度改变了人们的生活、工作和娱乐方式,而且这些改变还在加速。
周立功单片机使用说明:1.运行Keil uVision2,先建立工程,选择单片机型号philips 87C52X22.建立asm应用程序,目录和工程在同一地方,然后在Target 1中加载应用程序(用户程序***.asm)到工程中。
3.运行“Option for target”,在“OUTPUT”选项中选择“HEX FILE”4.编译生成HEX文件5.运行DPFLASH软件将HEX文件下载到单片机实验箱,注意改变load/run的模式。
该单片机实验箱有两款模式:直接下载模式与调试模式。
1.直接下载模式该模式把用户程序直接下载到实验相中的单片机外扩程序存储器flash中,该flash空间为64K,注意用户程序的首地址应为0000H,把用户声称的HEX文件通过DPFLSH下载到flash中,load完后,切换到Run状态,按下复位按键即可运行用户程序。
注意在Options for Target中的Output中选上Creat HEX File选项。
2.调试模式在该模式中需要把MON51监控程序下载到实验箱中的flash中,所占地址空间为0000—7FFFH,用户程序空间为8000---BFFFH,但是用户调试程序所占的空间为为外部SRAM,而非flash,用户数据空间为C000---FFFFH。
当MON51下载至实验箱后,将拨键拨到RUN状态。
在Options for Target 中off-chip code momory设置EProm 0x8000 size 0x4000; Off-chip Xdata momory Ram start oxc000 size ox4000.C51标签中Define :monitor51,并且选中Interrupt vectors at a 0X8000. Debug标签中选择USE Keil Monotor-51 Debug。
Setting:选波特率9600。
第5章 GUI应用基础GUI 为Graphics User Interface的简写易操作性的计算机程序它极大地方便了非专业用户的使用菜单方便地进行操作32位嵌入式处理器及图形显示设备的广泛应用由于嵌入式系统的资源有限高速度的并列出几款点阵图形液晶模块及在EasyARM2200开发板上的连接及驱动程序的编写5.1 点阵式图形液晶显示屏点阵式图形液晶显示屏是平板显示器件中的一种无辐射如手机电子游戏机和便携式仪表等等点阵式图形液晶显示屏也就成为了嵌入式系统中最主要的图形显示设备是一种在一定温度范围内呈现既不同于固态它既具有各向异性的晶体所特有的双折射性点阵式图形液晶显示屏是LCD的一种为各种电子产品提供了友好的人机界面1. 工作电压低一般LCD的驱动电压为1.5V¿ÉÒÔÖ±½ÓÓë´ó¹æÄ£¼¯³Éµç·ֱ½ÓÆ¥ÅäCRT显示器则需要几十千伏调制电压系统电源电压一般都不高W/cm2¹¦ºÄÖ÷ÒªÏûºÄÔÚÇý¶¯IC及其外围电路上3. 体积小液晶显示屏为平板形结构投影显示器要小得多所以大量的便携式产品中均使用LCD进行信息的显示4. 可视面积大根据实际需求而且对于相同尺寸的显示器因为它根本就不存在辐射液晶显示器也有自己独特的优势而普通显示器为了散发热量的需要泄漏不需要转换成模拟信号7. 寿命长液晶显示器件本身几乎没有什么劣化问题5.1.2 点阵式图形液晶显示屏的种类1ÎÒÃÇ¿ÉÄܽӴ¥¹ý¸÷ÖÖ¸÷ÑùµÄµãÕóʽͼÐÎÒº¾§ÆÁl TN(Twist Nematic)扭曲向列型将涂有ITO透明导电层的两片玻璃基板间夹上一层正介电各向异性液晶然后上下各加一偏光片由于TN型液晶显示器件的电光响应慢多路驱动上有一定限制最多只能做到64路点阵的驱动只不过液晶分子扭曲180°ÆäÌØµãÊǵç¹âÏìÓ¦ÇúÏ߸üºÃSTN液晶只可以实现伪彩色(一般人眼可以分辨18bit色否则称之为伪彩色)显示但由于构成它们的矩阵方式是无源矩阵从而不能显示真正的活动图像一般是对液晶盒施加电压出现所以行列数越多也因为如此目前l TFT(Thin Film Transistor)薄膜晶体管型TFT为薄膜晶体管有源矩阵液晶显示器件从而可以大大提高液晶显示器的对比度由于每个节点都相对独立同时可以精确控制显示色阶现在的TFT型液晶一般都实现了18bit以上的彩色(256K色)SVGA(800×600)TFT液晶显示器也存在着耗电较大和成本较高的不足另外电控双折射型(ECB)和铁电型(FE)等等所以这里就不一一介绍了我们常见点阵式图形液晶屏有以下几种显示的点为黑色白色字/暗蓝底色单色点阵式图形液晶均采用TN/STN技术l 4级灰度屏将黑白色分为4级实质上是由控制器支持实质上是由控制器支持实质上是由控制器支持实质上是由控制器支持一般采用STN技术一般采用STN技术一般都实现了18bit以上的彩色(256K色)3. 触摸屏对于点阵式图形液晶显示屏用于检测屏幕触摸输入信号以下是几种常见的触摸屏的类型其中一层在屏幕的左右边缘各有一条垂直总线四线式触摸屏是最常用的触摸屏之一图5. 1 四线式触摸屏结构示意图触摸屏的两个金属导电层分别用来测量X轴和Y轴方向的坐标记为X+和X-¼ÇΪY+和Y-当在一对电极上施加电压时而Y方向电极对上不加电压时通过测量Y+电极对地的电压大小当在Y电极对上加电压通过测量X+(或X-)电极的电压图5. 2 四线式触摸屏测量原理在使用触摸屏时通常直接使用触摸屏控制器完成这一功能触摸屏控制器的主要功能是在微处理器的控制下向触摸屏的两个方向分时施加电压在微处理器SPI口提供的同步时钟作用下将数字信号输出到微处理器ADS7843/7846Ö÷񻂿±ðÔÚÓÚÎåÏßʽ´¥ÃþÆÁ将其中一导电层的四端均引出来作为四个电极测量时要交替在X方向电极和Y方向电极上施加电压l 表面声波触摸屏表面声波触摸屏的触摸部分是一块强化玻璃板右上角则固定了两个相应的超声波接收换能器工作原理以右上角的X轴发射换能器为例声波能量经过屏体表面接收换能器将返回的表面声波能量变为电信号X轴途经手指部位向上走的声波能量被部分吸收Y坐标外表面声波触摸屏的主要特点是清晰美观触摸准确l 电容式触摸屏电容式触摸屏是在玻璃屏幕上镀一层透明的薄膜体层此外用户触摸屏幕时耦合电容而电流的强弱与手指及电极间的距离成正比电容式触摸屏的特点为触摸准确度较高但怕静电干扰利用触摸体阻隔红外线的工作方式进行坐标点测定工作的技术红外线式触摸屏安装简单光点距架框的四边排列了红外线发射管及接收管便会挡住经过该位置的横竖两条红外线如阳光或室内射灯等均会影响红外线触摸屏的准确度不适宜放置于户外MicroTouch日本的Minato和CarrolltouchÖ÷ÒªÃæÏòµç×èÎåÏßʽµç×è´¥ÃþÆÁ½ÏΪÁ÷ÐеÄÊÇÃÀ¹úEloTouch和Microtouch品牌5.2 常用点阵式图形液晶控制器在嵌入式系统应用中如果微控制器本身没有液晶驱动控制功能目前较为流行的点阵式图形液晶控制器有EPSON公司的SED系列产品这里将一些常用的控制器及其参数列举如下适用于中等规模单色点阵图形液晶(通过外部增加的色彩生成电路和M信号生成电路支持64K字节显示存储器器件引脚图如图5. 4所示指令丰富相关参数如下5.5V 最大驱动液晶点阵64K字节SRAMMPU接口水平和垂直方向卷动显示方式1/2工作电流典型值3.5mA图5. 3 SED1335F逻辑框图图5. 4 SED1335F引脚图l SED1351FSED1351F是高占空比的点阵式图形液晶控制器支持虚拟屏具有循环侵占方式的数据和地址的电路SED1351F是一款低功耗CMOS控制器SED1351F0A器件引脚图如图5. 6所示相关参数如下单色102464K字节SRAMMPU接口黑白色显示或4级灰度显示屏幕卷动最高1/1024图5. 5 SED1351F逻辑框图图5. 6 SED1351F0A引脚图图5. 7 SED1351FLB引脚图l SED1520系列SED1520系列液晶驱动器是显示字符和图形的单片点阵式液晶驱动控制芯片具有较宽的工作电压范围SED1520引脚图如图5. 9所示低功耗CMOS工艺高速8位MPU接口内部显示数据RAM为2560位以驱动更多点阵路数驱动LCD占空比最高1/32图5. 8 SED1520原理框图图5. 9 SED1520引脚图l SED1565系列SED1565系列液晶驱动器是显示字符和图形的单片点阵式液晶驱动控制芯片132位显示数据RAMMPU通过8位并行方式或串行方式SED1565原理逻辑框图如图5. 10所示SED1565系列液晶控制器具有以下基本功能内部显示数据RAM为65支持主从操作LCD电压V5=驱动LCD占空比最高1/65图5. 10 SED1565原理框图l SED1353FSED1353F是一款最大能支持10244/16级灰度单色液晶显示器器件逻辑框图如图5. 11所示SED1353F1A器件引脚图如图5. 13所示宽工作电压黑白色1024512256伪彩色51216位16MHZ的MC68xx MPU接口带有READY(或WAIT#)信号的8/16位MPU接口显示方式最高1/1024低功耗图5. 11 SED1353F原理框图图5. 12 SED1353F0A引脚图图5. 13 SED1353F1A引脚图l SED1354FSED1354F是一款能支持TFT点阵液晶和CRT显示器的控制器支持9/12位支持16/256级灰度单色液晶显示支持虚拟屏SED1354F器件引脚图如图5. 15所示低成本宽工作电压16级灰度/伪彩色8006009/12位TFT液晶(64K色) 8002M字节EDO-DRAM或FPM-DRAM16位总线接口内置调色板图5. 14 SED1354原理框图图5. 15 SED1354引脚图5.2.2 HD系列点阵式图形液晶控制器l HD61202/3HD61202/3是日本日立公司的适用于小规模单色点阵液晶的液晶列/行驱动控制器使用两片或三片HD61202可组成128点列或192点列的列驱动器组显示屏上各像素点的显示状态与显示存储器的各位数据一一对应配备有显示存储器管理电路芯片引脚图如图5. 17所示宽工作电压黑白色64列/行支持存储器大小8位并行数据接口最高1/64(HD61202) 1/128(HD61203)低功耗市场上采用兼容产品KS0107/8代替图5. 16 HD61202原理框图图5. 17 HD61202引脚图l HD61830HD61830适用于小规模的单色点阵图形液晶控制器具有片内字符发生器CGROMÆ÷¼þÒý½ÅͼÈçͼ5. 19所示以驱动更多点阵路数工作电压64K字节SRAMMPU接口图形方式/文本方式字符发生器7字符(CGROM)32种5图5. 18 HD61830原理框图图5. 19 HD61830引脚图5.2.3 东芝公司点阵式图形液晶控制器T6963CT6963C常用于中规模的单色点阵图形液晶的显示控制器显示驱动所需的参数如占空比系数字符的字体选择等均由引脚电平设置器件引脚图如图5. 21所示工作电压128(单屏)支持存储器大小图形方式128种578×Ö·û)驱动LCD占空比显示期间电流典型值3.3mA图5. 20 T6963C原理模框图图5. 21 T6963C引脚图另外比如ST7920Éú²ú³§¼Òͨ³£»á½«Òº¾§ÏÔʾÆÁºÍÇý¶¯µç·װÅäÔÚÒ»Æð简称LCMËüÊǽ«Òº¾§ÏÔʾÆ÷¼þPCB线路板液晶显示模块在很大程度上方便了用户的使用这里列举几种常用的点阵式图形液晶模块及驱动程序128点视角为6:00模块的电路原理框图如图5. 22所示 图5. 22 SMG240128A点阵图形液晶模块原理框图 EasyARM2200开发板可以直接支持SMG240128A点阵图形液晶模块或相兼容的液晶模块采用8位总线方式连接显示地址和显示数据均通过DB0ÓÉÓÚÄ£¿é¹¤×÷µçÔ´ÊÇ5V所以在总线上串接470½«C/D与A1连接有一个好处模块的片选信号由LPC2210的A22和外部存储器BANK3片选CS3相当A22和nCS3同时为0时命令操作地址为0x83000002图5. 23 SMG240128A点阵图形液晶模块应用连接电路使用LPC2210的总线对SMG240128A点阵图形液晶模块操作控制前如程序清单5. 1所示如程序清单5. 2所示程序清单5. 1存储器接口BANK3总线配置LCDDRIVE.C* 功能32K显示存* 显示是横向字节图形液晶采用T6963C液晶控制芯片并行接口(使用LPC2210驱动)D0--D7 <===> D0--D7* /WR <===> nWE* /RD <===> nOE* /CE <===> nCS3_1* C/D <===> A1** /RST <===> VCC****************************************************************************************/ #include "config.h"TCOLOR gui_disp_buf[][GUI_LCM_XMAX/8]; // 声明GUI显示缓冲区/* 定义LCM地址 */#define TG240128_COM (*((volatile unsigned short *) 0x83000002))#define TG240128_DAT (*((volatile unsigned short *) 0x83000000))/************************************************************************ 名称写命令子程序不检查液晶模块的状态)* 入口参数无* 说明LCD_WriteData()* 功能不检查液晶模块的状态)* 入口参数无* 说明LCD_ReadState()* 功能无* 出口参数函数会设置LCM数据总线为输入方式***********************************************************************/#define LCD_ReadState() TG240128_COM/************************************************************************ 名称读取数据子程序无* 出口参数函数会设置LCM数据总线为输入方式***********************************************************************/#define LCD_ReadData() TG240128_DAT/* 以下为LCM的驱动层提供设置显示地址等功能带参数命令模式操作模式N/6或N/8N/6或N/8Âß¼-»ò */#define LCD_MOD_XOR 0x81 /* 显示方式逻辑与 */#define LCD_MOD_TCH 0x83 /* 显示方式#define LCD_DIS_SW 0x90 /* 显示开关光标显示启用/禁用 *//* D2=1/0图形显示启用/禁用(打开后再使用) */#define LCD_CUR_SHP 0xA0 /* 光标形状选择地址加1 */#define LCD_INC_RD 0xC1 /* 数据一次读地址减1 */#define LCD_DEC_RD 0xC3 /* 数据一次读地址不变 */#define LCD_NOC_RD 0xC5 /* 数据一次读D0-D2--定义D0-D7位0为清除 *//************************************************************************ 名称判断读写指令和读写数据是否允许无* 出口参数LCD_TestStaBit3()无* 出口参数LCD_WriteTCommand1() * 功能* 入口参数操作出错返回0LCD_WriteTCommand3() * 功能* 入口参数操作出错返回0ÏÈ·¢ËÍÁ½×Ö½Ú²ÎÊý¾ÝÊý¾Ýif( LCD_TestStaBit01()==0 ) return(0);LCD_WriteCommand(command); // 发送命令字return(1);}/*********************************************************************** * 名称写单参数命令子程序* 入口参数操作出错返回0ÏÈ·¢ËͲÎÊý¾ÝÊý¾ÝLCD_WriteTData1()* 功能* 入口参数操作出错返回0Ö÷Òª¸ºÔð½âÊÍÓû§ÃüÁîLCM初始化显示起始地址为0x0000ÎÞ* 出口参数函数会设置LCM数据总线为输出方式***********************************************************************/void LCD_Initialize(void){ LCD_WriteTCommand3(LCD_TXT_STP, 0x00, 0x00); // 设置文本方式RAM起始地址LCD_WriteTCommand3(LCD_TXT_WID, 30, 0x00); // 设置文本模式的宽度 // N为宽度点数宽度为N/6或N/8Èç240LCD_WriteTCommand1(LCD_MOD_OR); // 设置显示方式为"或"LCD_WriteTCommand1(LCD_DIS_SW|0x08); // 设置纯图形显示模式}/************************************************************************ 名称LCD填充起始地址为0x0000dat 要填充的数据* 出口参数LCD_UpdatePoint()* 功能* 入口参数返回值为1时表示操作成功* 说明****************************************************************************/void LCD_UpdatePoint(uint32 x, uint32 y){ uint32 addr;/* 找出目标地址 */addr = y*(GUI_LCM_XMAX>>3) + (x>>3);LCD_WriteTCommand3(LCD_ADR_POS, addr&0xFF, addr>>8); // 置地址指针/* 输出数据 */LCD_WriteTCommand2(LCD_INC_WR, gui_disp_buf[y][x>>3]);}/***************************************************************************** 名称LCM全屏刷新 * 入口参数无****************************************************************************/void LCD_UpdateSCR(void){ uint32 i, j;/* 开始复制数据 */LCD_WriteTCommand3(LCD_ADR_POS, 0x00, 0x00); // 置地址指针LCD_WriteTCommand1(LCD_AUT_WR); // 自动写for(i=0; i<GUI_LCM_YMAX; i++) // 历遍所有行{ for(j=0; j<GUI_LCM_XMAX/8; j++) // 历遍所有行{ LCD_WriteTData1(gui_disp_buf[i][j]);}}LCD_WriteTCommand1(LCD_AUT_OVR); // 自动写结束}5.3.2 MG12864点阵式图形液晶模块MG12864点阵图形液晶模块的点像素为128ÊÓ½ÇΪ6:00模块的电路原理框图如图5. 24所示应用连接电路如图5. 25所示MG12864点阵图形液晶模块的没有地址总线由于模块工作电源是5V所以在总线上串接470ÓÃÓÚ¿ØÖÆÄ£¿é´¦ÀíÊý¾Ý/命令就是LPC2210可以使用16位总线方式操作该图形液晶模块(高8位数据被忽略)A22到的所以需要LCM_CS1ÓÉÓÚKS0108的片选是高电平有效所以需要使用74HC04将信号反相A21和nCS2同时为0时所以其数据操作地址为0x82000000当A23A21为1时所以其数据操作地址为0x82200000图5. 24 MG12864点阵图形液晶模块原理框图图5. 25 MG12864点阵图形液晶模块应用连接电路使用LPC2210的总线对MG12864点阵图形液晶模块操作控制前如程序清单5. 3所示所以把总线配置为最慢的时序驱动程序对应的头文件如程序清单5. 5所示程序清单5. 3存储器接口BANK2总线配置LCM_DRIVE.C* 功能在LCM_DRIVE.H文件中定义了LCM操作地址写数据操作地址为0x82000002* 由于GRAPHICS.C中使用了disp_buf作为作图缓冲区LCM_DispFill()均要更新disp_bufLCM_Wr1Command()* 功能 * 入口参数LCM_Wr2Command()* 功能 * 入口参数LCM_Wr1Data()* 功能 * 入口参数LCM_Wr2Data()* 功能 * 入口参数LCM_DispIni()* 功能设置显示起始行为0并清屏无* 出口参数即列LCM_Wr2Command(LCM_ADDRSTRY+0);LCM_Wr2Command(LCM_ADDRSTRX+0);}/*********************************************************************** * 名称向指定点写数据(一字节)* 入口参数无* 说明CS2--控制后64个点) { LCM_Wr1Command(LCM_ADDRSTRX+x); // 设置当前列地址即y坐标for(x=0; x<10; x++); // 短延时LCM_Wr1Data(wrdata);}else{ x = x-64; // 调整x变量值LCM_Wr2Command(LCM_ADDRSTRX+x);LCM_Wr2Command(LCM_ADDRSTRY+y);for(x=0; x<10; x++);LCM_Wr2Data(wrdata);}}/************************************************************************ 名称向显示屏填充数据* 入口参数无* 说明for(y=0; y<8; y++){ LCM_Wr1Command(LCM_ADDRSTRY+y); // 设置页(行)地址 LCM_Wr1Command(LCM_ADDRSTRX); // 设置列地址LCM_Wr2Command(LCM_ADDRSTRY+y);LCM_Wr2Command(LCM_ADDRSTRX);for(i=0; i<10; i++);for(x=0; x<64; x++){ LCM_Wr1Data(filldata);LCM_Wr2Data(filldata);disp_buf[y][x] = filldata;disp_buf[y][x+64] = filldata;}}}/* ASCII码对应的点阵数据表 */uint8 const ASCII_TAB20[80] = {0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x9e, 0x00, 0x00,0x00, 0x0e, 0x00, 0x0e, 0x00,0x28, 0xfe, 0x28, 0xfe, 0x28,0x48, 0x54, 0xfe, 0x54, 0x24,0x46, 0x26, 0x10, 0xc8, 0xc4,0x6c, 0x92, 0xaa, 0x44, 0xa0,0x00, 0x0a, 0x06, 0x00, 0x00,0x00, 0x38, 0x44, 0x82, 0x00,0x00, 0x82, 0x44, 0x38, 0x00,0x28, 0x10, 0x7c, 0x10, 0x28,0x10, 0x10, 0x7c, 0x10, 0x10,0x00, 0xa0, 0x60, 0x00, 0x00,0x10, 0x10, 0x10, 0x10, 0x10,0x00, 0xc0, 0xc0, 0x00, 0x00,0x40, 0x20, 0x10, 0x08, 0x04};uint8 const ASCII_TAB30[80] = {0x7C, 0xA2, 0x92, 0x8A, 0x7C,0x00, 0x84, 0xFE, 0x80, 0x00,0x84, 0xC2, 0xA2, 0x92, 0x8C,0x42, 0x82, 0x8A, 0x96, 0x62,0x30, 0x28, 0x24, 0xFE, 0x20,0x4E, 0x8A, 0x8A, 0x8A, 0x72,0x78, 0x94, 0x92, 0x92, 0x60,0x02, 0xE2, 0x12, 0x0A, 0x06,0x6C, 0x92, 0x92, 0x92, 0x6C,0x0C, 0x92, 0x92, 0x52, 0x3C,0x00, 0x6C, 0x6C, 0x00, 0x00,0x00, 0xAC, 0x6C, 0x00, 0x00,0x10, 0x28, 0x44, 0x82, 0x00,0x28, 0x28, 0x28, 0x28, 0x28,0x00, 0x82, 0x44, 0x28, 0x10,0x04, 0x02, 0xA2, 0x12, 0x0C};uint8 const ASCII_TAB40[80] = {0x64, 0x92, 0xF2, 0x82, 0x7C,0xFC, 0x22, 0x22, 0x22, 0xFC,0xFE, 0x92, 0x92, 0x92, 0x6C,0x7C, 0x82, 0x82, 0x82, 0x44,0xFE, 0x82, 0x82, 0x44, 0x38,0xFE, 0x92, 0x92, 0x92, 0x82,0xFE, 0x12, 0x12, 0x12, 0x02,0x7C, 0x82, 0x92, 0x92, 0xF4,0xFE, 0x10, 0x10, 0x10, 0xFE,0x00, 0x82, 0xFE, 0x82, 0x00,0x40, 0x80, 0x82, 0x7E, 0x02,0xFE, 0x10, 0x28, 0x44, 0x82,0xFE, 0x80, 0x80, 0x80, 0x80,0xFE, 0x04, 0x18, 0x04, 0xFE,0xFE, 0x08, 0x10, 0x20, 0xFE,0x7C, 0x82, 0x82, 0x82, 0x7C};uint8 const ASCII_TAB50[80] = {0xFE, 0x12, 0x12, 0x12, 0x0C,0x7C, 0x82, 0xA2, 0x42, 0xBC,0xFE, 0x12, 0x32, 0x52, 0x8C,0x8C, 0x92, 0x92, 0x92, 0x62,0x02, 0x02, 0xFE, 0x02, 0x02,0x7E, 0x80, 0x80, 0x80, 0x7E,0x3E, 0x40, 0x80, 0x40, 0x3E,0x7E, 0x80, 0x70, 0x80, 0x7E,0xC6, 0x28, 0x10, 0x28, 0xC6,0x0E, 0x10, 0xE0, 0x10, 0x0E,0xC2, 0xA2, 0x92, 0x8A, 0x86,0x00, 0xFE, 0x82, 0x82, 0x00,0x04, 0x08, 0x10, 0x20, 0x40,0x00, 0x82, 0x82, 0xFE, 0x00,0x08, 0x04, 0x02, 0x04, 0x08,0x80, 0x80, 0x80, 0x80, 0x80};uint8 const ASCII_TAB60[80] = {0x00, 0x02, 0x04, 0x08, 0x00,0x40, 0xA8, 0xA8, 0xA8, 0xF0,0xFE, 0x90, 0x88, 0x88, 0x70,0x70, 0x88, 0x88, 0x88, 0x40,0x70, 0x88, 0x88, 0x90, 0xFE,0x70, 0xA8, 0xA8, 0xA8, 0x30,0x10, 0xFC, 0x12, 0x02, 0x04,0x18, 0xA4, 0xA4, 0xA4, 0x7C,0xFE, 0x10, 0x08, 0x08, 0xF0,0x00, 0x88, 0xFA, 0x80, 0x00,0x40, 0x80, 0x88, 0x7A, 0x00,0xFE, 0x20, 0x50, 0x88, 0x00,0x00, 0x82, 0xFE, 0x80, 0x00,0xF8, 0x08, 0x30, 0x08, 0xF8,0xF8, 0x10, 0x08, 0x08, 0xF0,0x70, 0x88, 0x88, 0x88, 0x70};uint8 const ASCII_TAB70[80] = {0xF8, 0x28, 0x28, 0x28, 0x10,0x10, 0x28, 0x28, 0x30, 0xF8,0xF8, 0x10, 0x08, 0x08, 0x10,0x90, 0xA8, 0xA8, 0xA8, 0x40,0x08, 0x7E, 0x88, 0x80, 0x40,0x78, 0x80, 0x80, 0x40, 0xF8,0x38, 0x40, 0x80, 0x40, 0x38,0x78, 0x80, 0x60, 0x80, 0x78,0x88, 0x50, 0x20, 0x50, 0x88,0x18, 0xA0, 0xA0, 0xA0, 0x78,0x88, 0xC8, 0xA8, 0x98, 0x88,0x00, 0x10, 0x6C, 0x82, 0x00,0x00, 0x00, 0xFE, 0x00, 0x00,0x00, 0x82, 0x6C, 0x10, 0x00,0x10, 0x10, 0x54, 0x38, 0x10,0x10, 0x38, 0x54, 0x10, 0x10};/************************************************************************ 名称指定地址显示字符disp_cy 显示行值(0-7)* disp_cx 显示列值(0-15)* dispdata 所要显示的字符(ASCII码)* 注a-z及空格模为8*8ÿÐÐ16个字符)²¢ÉèÖÃÏàÓ¦µÄµãÕóÊý¾Ý±í*/ switch(dispdata&0xf0){ case 0x20:dispdata = (dispdata&0x0f)*5;pchardata = &ASCII_TAB20[dispdata];break;case 0x30:dispdata = (dispdata&0x0f)*5;pchardata = &ASCII_TAB30[dispdata];break;case 0x40:dispdata = (dispdata&0x0f)*5;pchardata = &ASCII_TAB40[dispdata];break;case 0x50:dispdata = (dispdata&0x0f)*5;pchardata = &ASCII_TAB50[dispdata];break;case 0x60:dispdata = (dispdata&0x0f)*5;pchardata = &ASCII_TAB60[dispdata];break;case 0x70:dispdata = (dispdata&0x0f)*5;pchardata = &ASCII_TAB70[dispdata];break;default:pchardata = &ASCII_TAB20[0];break;} // end of switch(dispdata&0xf0)...if( (disp_cx&0x08) == 0 ) // 选择液晶控制芯片(即CS1--控制前8个字符即列 LCM_Wr1Command(LCM_ADDRSTRY+disp_cy); // 设置当前页地址再乘以8 LCM_Wr2Command(LCM_ADDRSTRX+i);LCM_Wr2Command(LCM_ADDRSTRY+disp_cy); // 设置当前页地址* 名称字符串显示输出disp_cy 显示起始行(0-7)* disp_cx 显示起始列(0-15)* disp_str 字串指针* 出口参数支持显示字符0-9a-z及空格模为8*8ÿÐÐ16个字符)LCM_DRIVE.H* 功能/* 显示起始行0(x<64) */#define LCM_STARTROW 0xc0/* 页起始地址(x<8) */ #define LCM_ADDRSTRY 0xb8 /* 列起始地址(x<64) */ #define LCM_ADDRSTRX 0x40 /* 定义宏函数 */#define LCM_DispClr() LCM_DispFill(0x00) /* 清屏函数 *//*********************************************************************** * 名称LCM显示初始化* 入口参数无* 注 ***********************************************************************/ extern void LCM_DispIni(void);/*********************************************************************** * 名称向指定点写数据(一字节)x x坐标值(0-127)* y y坐标值(0-63)* wrdata 所要写的数据* 出口参数LCM_DispFill()* 功能filldata 要写入LCM的填充数据* 出口参数* 名称指定地址显示字符disp_cy 显示行值(0-7)* disp_cx 显示列值(0-15)* dispdata 所要显示的字符(ASCII码)* 注a-z及空格模为8*8ÿÐÐ16个字符)LCM_DispStr()* 功能disp_cy 显示起始行(0-7)* disp_cx 显示起始列(0-15)* disp_str 字串指针* 出口参数支持显示字符0-9a-z及空格模为8*8ÿÐÐ16个字符)µãÏñËØÎª320ÆÁÄ»³ß´çΪ5.2英寸模块的电路原理框图如图5. 26所示LPC2210也没有点阵图形控制器功能 EasyARM2200开发板可以通过外设PACK来支持以SED1353F为液晶控制器的点阵图形液晶模块根据SED1353F的用户手册说明由于SED1353F工作电源是5V所以在总线上串接470VD15引脚上的状态值设置说明如下VD1为18080系列MPU接口不交换高VD4均为01)VD15即设置选择存储器接口访问基地址(位3所以电路上AB19AB17引脚要接地A22当A23IO_CS变为低电平所以其寄存器地址为0x82000000当A23A21为1时所以其数据操作地址为0x82200000图5. 26 LFUBK909XA点阵图形液晶模块原理框图图5. 27 SED1353F控制器应用连接电路使用LPC2210的总线对SED1353F操作控制前基于SED1353F控制的点阵图形液晶模块LFUBK909XA驱动程序如程序清单5. 7所示ADS1.2集成开发环境程序清单5. 6 存储器接口BANK2总线配置…LDR R0, =BCFG2LDR R1, =0x00009629STR R1, [R0]…程序清单5. 7 基于SED1353F控制的LFUBK909XA液晶模块驱动程序/***************************************************************************************** 文件名通过操作SED1353* 说明* SED1353的寄存器地址为0x8200000x****************************************************************************************/#include "config.h"/* 定义显示缓冲区(可根据情况定义或直接使用LCM显示存储空间) */TCOLOR gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX];/* 定义SED1353控制地址 */#define SED1353_REG 0x82000000#define SED1353_DAT 0x82200000uint8 const INIT_TAB[14] = {0x00, // 寄存器0 -- 00000000B (正常工作模式打开显示使能LCDENB16位显示存储数据总线方式) 159, // 寄存器2 -- 159 (行字节控制)(每行显示占用的存储器字节数256彩色方式)239, // 寄存器4 -- 239 (总行数)0, // 寄存器5 -- 0 (WF翻转周期,为0时表示每一帧WF输出翻转一次)0x00, // 寄存器6 -- 00H (第一屏显示RAM地址低8位)0x00, // 寄存器7 -- 00H (第一屏显示RAM地址高8位)0x00, // 寄存器8 -- 00H (第二屏显示RAM地址低8位)0x00, // 寄存器9 -- 00H (第二屏显示RAM地址高8位)239, // 寄存器A -- 239 (显示一区占用行数)0, // 寄存器B -- 0 (显示一区占用行数正常操作模式)};/***************************************************************************** 名称初始化SED1353* 入口参数无* 说明然后赋值给SED1353相应的寄存器SED1353_LutInit()* 功能绿基色设置为07136* 入口参数无* 说明设置地址*REG_Point2 = LUT_RED_TAB[i]; // 设置红色调色板*REG_Point2 = LUT_GRN_TAB[i]; // 设置绿色调色板*REG_Point2 = LUT_BLU_TAB[i]; // 设置蓝色调色板}}/**************************************************************************** * 名称指定点显示disp_adr 显示起始地址* dat 要填充的数据* 出口参数ScreenFill()* 功能256色dat 要填充的数据* 出口参数直接对显存进行操作****************************************************************************/ void ScreenFill(TCOLOR dat){ volatile uint8 *DAT_Point;uint32 i;DAT_Point = (void *) SED1353_DAT;for(i=0; i<320*240; i++) // 填充字节数为320*240{ *DAT_Point = dat;DAT_Point++;}}/************************************************************************ 名称LCM初始化显示起始地址为0x0000ÎÞ* 出口参数***********************************************************************/ void LCD_Initialize(void){ SED1353_Init(); // 初始化LCM工作模式SED1353_LutInit(); // 初始化调色板}/*********************************************************************** * 名称LCD填充起始地址为0x0000dat 要填充的颜色数据* 出口参数LCD_UpdatePoint()* 功能* 入口参数无* 说明DAT_Point = (void *) (SED1353_DAT+addr);*DAT_Point = gui_disp_buf[y][x]; // 输出数据}/***************************************************************************** 与LCM相关的GUI接口函数****************************************************************************//***************************************************************************** 名称全屏填充* 入口参数无* 说明GUI_Initialize()* 功能初始化LCM并清屏无* 出口参数用户根据LCM的实际情况编写此函数纯图形模式 GUI_FillSCR(0x00); // 初始化缓冲区为0x00/***************************************************************************** 名称清屏无* 出口参数用户根据LCM的实际情况编写此函数GUI_Point()* 功能x 指定点所在列的位置* y 指定点所在行的位置* color 显示颜色(对于黑白色LCMΪ1时显示)* 出口参数(操作失败原因是指定* 地址超出有效范围)* 说明只有一个位有效其它位数的* 一样处理GUI_ReadPoint()* 功能x 指定点所在列的位置* y 指定点所在行的位置* ret 保存颜色值的指针* 出口参数对于单色4级灰度则为d0RGB结构则R****************************************************************************/ int GUI_ReadPoint(uint32 x, uint32 y, TCOLOR *ret){ /* 参数过滤 */if(x>=GUI_LCM_XMAX) return(0);if(y>=GUI_LCM_YMAX) return(0);/* 取得该点颜色(用户自行更改) */*ret = gui_disp_buf[y][x];return(1);}/**************************************************************************** * 名称画水平线x0 水平线起点所在列的位置* y0 水平线起点所在行的位置* x1 水平线终点所在列的位置* color 显示颜色(对于黑白色LCMΪ1时显示) * 出口参数对于单色可通过修改此函数作图提高速度而不需要一个点一个点的写到LCM中x1大小进行排列描出垂直线x0++;}while(x1>=x0);}/**************************************************************************** * 名称画垂直线x0 垂直线起点所在列的位置* y0 垂直线起点所在行的位置* y1 垂直线终点所在行的位置* color 显示颜色* 出口参数对于单色可通过修改此函数作图提高速度而不需要一个点一个点的写到LCM中y1大小进行排列描出垂直线y0++;}while(y1>=y0);}/**************************************************************************** * 名称判断颜色值是否一致color1 颜色值1* color2 颜色值2* 出口参数* 说明****************************************************************************/ //int GUI_CmpColor(TCOLOR color1, TCOLOR color2)//{ if(color1==color2) return(1);// else return(0);//}/**************************************************************************** * 名称颜色值复制color1 目标颜色变量* color2 源颜色变量* 出口参数由于颜色类型TCOLOR可以是结构类型LCDDRIVE.H* 功能刷新显示子程序****************************************************************************************/ #ifndef LCDDRIVE_H#define LCDDRIVE_H/* 定义颜色数据类型(可以是数据结构) */#define TCOLOR uint8/* 定义LCM像素数宏 */#define GUI_LCM_XMAX 320 /* 定义液晶x轴的像素数 */#define GUI_LCM_YMAX 240 /* 定义液晶y轴的像素数 *//***************************************************************************** 名称初始化GUI* 入口参数无* 说明GUI_FillSCR()* 功能* 入口参数无* 说明/***************************************************************************** 名称清屏无* 出口参数用户根据LCM的实际情况编写此函数GUI_Point()* 功能x 指定点所在列的位置* y 指定点所在行的位置* color 显示颜色(对于黑白色LCMΪ1时显示)* 出口参数(操作失败原因是指定* 地址超出有效范围)* 说明GUI_ReadPoint()* 功能x 指定点所在列的位置* y 指定点所在行的位置* ret 保存颜色值的指针* 出口参数对于单色4级灰度则为d0RGB结构则R****************************************************************************/ extern int GUI_ReadPoint(uint32 x, uint32 y, TCOLOR *ret);/***************************************************************************** 名称画水平线x0 水平线起点所在列的位置* y0 水平线起点所在行的位置* x1 水平线终点所在列的位置* color 显示颜色(对于黑白色LCMΪ1时显示)* 出口参数对于单色可通过修改此函数作图提高速度而不需要一个点一个点的写到LCM中GUI_RLine()* 功能x0 垂直线起点所在列的位置* y0 垂直线起点所在行的位置* y1 垂直线终点所在行的位置* color 显示颜色* 出口参数对于单色可通过修改此函数作图提高速度而不需要一个点一个点的写到LCM中GUI_CmpColor()* 功能color1 颜色值1* color2 颜色值2* 出口参数* 说明****************************************************************************/ //extern int GUI_CmpColor(TCOLOR color1, TCOLOR color2);#define GUI_CmpColor(color1, color2) (color1==color2)/**************************************************************************** * 名称颜色值复制color1 目标颜色变量* color2 源颜色变量* 出口参数由于颜色类型TCOLOR可以是结构类型5.3.4 触模屏驱动程序在嵌入式系统应用中常用的控制芯片有ADS7843/7846ADS7843是TI公司生产的四线式电阻触摸屏控制器3线/4线同步串行接口具有低功耗原理框图如图5. 29所示图5. 28 ADS7843引脚图图5. 29 ADS7843原理框图。
ISA-9620双路非智能CAN接口卡用户手册v1.0广州周立功单片机发展有限公司2004年01月08日目录一 功能特点-------------------------------------------------------1 三 设备安装-------------------------------------------------------34.1 光盘资源-------------------------------------------------34.2 硬件安装-------------------------------------------------34.3 设备驱动程序安装----------------------------------------44.4 设备驱动程序安装检查-----------------------------------------------9 五 产品服务-----------------------------------------------------156.1 保修期---------------------------------------------------156.2 保修政策包括的范围-------------------------------------156.3 保修政策不包括的范围-----------------------------------156.4 软件升级------------------------------------------------156.5 技术支持------------------------------------------------15 附录ACAN2.0B协议帧格式------------------------------------------18 附录C一其产权受国家法律保护其他公司代理商及个人不得非法使用和拷贝您若需要我公司产品及相关信息请及时与我们联系广州周立功单片机发展有限公司保留在任何時候修订本用户手册且不需通知的权利 功能特点ISA-9620双路非智能两通道CAN接口卡是ISA接口的CAN总线通讯接口卡实现CAN2.0B协议的连接通讯使得在开发应用中更显方便和灵活保护计算机机避免地环流的损坏ISA-9620非智能CAN接口卡采用WDM驱动程序Win2000支持多个设备该接口卡提供VC++Delphi·½±ãÓû§½øÐжþ´Î¿ª·¢Ó²¼þ²ÎÊý3.1 产品清单l ISA-9620双路非智能CAN接口卡1块l 接口动态链接库测试工具1份l ISA-9620用户手册1份l CAN-bus设计开发光盘1张l OPEN5转换座图3.1 ISA-9620双路非智能接口卡3.3 设备参数l 计算机接口占用1K硬件内存地址空间l CAN控制器 l CAN收发器 l 数据传送速率最高达1Mbit/sDB9针型插座l 光电隔离耐压 l CAN协议兼容CAN 2.0A单通道1000帧/秒(*)软件发送缓冲大小16帧l温度158mm x 98mmISA-9620非智能CAN 接口卡的具体性能指标与使用的计算机软硬件配置相关3.4 DB9针型插座引脚定义ISA-9620非智能CAN 接口卡有两个CAN 通道CZ2与实际的CAN 网络进行连接CZ2的管脚信号定义如表3.1所示表3.1 CAN 连接器DB9针型插座引脚号 信号 功能 2 CAN_L CAN_L 信号线 7 CAN_HCAN_H 信号线349 空 未用用户可以通过选配的DB9_OPEN5转换器CZ2的信号连接至5引脚的DeviceNET或 CANopen 网络介绍OPEN5插座的输出信号VCAN_H屏蔽线CAN_LV红色P.M.S#207C白色EIA935A 线缆限制蓝色P.M.S.#297C 黑色P.M.S.#426C四有以下目录树结构调试工具│├───ZLGCANTest││├───testdlls││└───kerneldlls│└───DebugView4.21├───Samples //编程例子│├───Delphi7│├───VB6│├───VC6│└───CB6├───Manual //用户手册及函数说明文档└───DOS //DOS驱动库及例子程序└───BC3.1├───Driver└───Sample4.2 硬件安装1ÏßÐÔÎïÀí»ùµØÖ·ÓÉDIP拨码开关JP0设定分别表示六个二进制位S5至S0ÔÚOFF位置则表示该位为1值ADD=0x000XY000X=0x0C+(2*S5+S4)例如S4为0值S2S0为1值时Y=8*1+4*1+2*1+1=0x0FISA-9620接口卡的硬件线性物理基地址ADD=0x000CF000ÔÚÇý¶¯°²×°¹ý³ÌÖÐ×¢ÒâÑ¡ÔñĬÈÏÓ²¼þÏßÐÔÎïÀí»ùµØÖ·ADD=0x000CF000 0 0 1 1 1 1声明因此ISA-9620接口卡在部分计算机(包括所使用的操作系统)不能正常使用当显示设备安装成功请尝试使用其它的可用内存地址空间资源2¿ÉÑ¡IRQ有IRQ3IRQ5IRQ7IRQ10 IRQ12通过跳线器JP2短路相应的IRQ通道注意上述大多数的IRQ在WINDOWS操作系统下都已经被占用IRQ4被串口中断占用应避免与其产生冲突出厂时3ÖÕ¶ËÆ¥Åäµç×èµÄ´óСÓÉ´«ÊäµçÀµÄÌØÐÔ×迹ºÍÊÕ·¢Æ÷Çý¶¯ÄÜÁ¦Ëù¾ö¶¨ISA-9620接口卡上每一通道都已经安装了一个120¸Ãµç×è·Ö±ðͨ¹ýJP3(CAN0)4³ö³§Ê±°²·ÅÔÚרÓñ£»¤´üÖн«ISA-9620非智能CAN接口卡插入计算机中任何一个闲置的ISA总线插槽同样4.3 设备驱动程序安装i. 在硬件可靠安装到计算机后重新启动计算机请参考下一条指示即在没有相应的硬件情况下也能正常安装驱动程序若能中常安装成功然后再进行硬件板卡安装首先在控制面板中启动向导并选择图4.1 硬件向导1继续下一步安装当系统提问否其它设备图4.2 硬件向导2当系统提问时从磁盘安装如图4.3所示图4.3 硬件向导3ISA-9620接口卡是ISA设备所以在进入下一步后系统将提示在的下拉列表中已经有18组基本配置可供选择基本配置0»ù±¾ÅäÖÃ17用户从中选择一个基本配置冲突设备列表没有冲突这就完成内存范围的资源分配在Win98操作系统驱动安装时只提供3组基本设置基本配置0»ù±¾ÅäÖÃ2用户可以手工修改驱动的INF文件指定适当的资源进行驱动安装 5.2 设备特性及接口函数使用注意事项成功安装设备驱动程序后但和必须与板卡硬件的JP0拨码开关/JP2跳线设置相匹配用户可以先安装驱动程序图4.4 内存地址资源指定完成了内存地址资源分配后如下图 4.5×ÊÔ´ÉèÖÃÖжÏÇëÇóÈçͼѡÖеIJ¿·ÖÖжÏÇëÇóËæºóÊó±êµ¥»÷°´Å¥½øÈëÖжÏÇëÇóµÄ±à¼-¶Ô»°¿ò图 4.5 选中中断请求在进入中断请求的编辑对话框后如下图4.6所示此资源被指派给以下子设备个无设备冲突的中断请求IRQ数值否则驱动程序不能响应硬件的中断请求再根据所得资源设定相关的硬件拨码开关和跳线图 4.6 编辑中断请求在确定和的设置后鼠标单击确定继续完成硬件安装向导图 4.7 编辑中断请求继续完成安装向导如下图4.8所示用户可以在计算机关闭时调整硬件设置以适应驱动所分配的资源要求图 4.8 完成硬件安装向导4.4 设备驱动程序安装检查(Windows2000)AiÎҵĵçÄÔiiÊôÐÔiiiÓ²¼þivÉ豸¹ÜÀíÆ÷Èçͼ4.9确认新的设备是否已经成功安装 设备类是否已经在当前硬件列表中 检查设备是否工作正常X当成功安装后设备管理器ZLGCAN ISA-9620 ISACANCommunication CardÈçͼ4.9所示图4.9 Win2000设备管理器用户可以双击设备检验设备所得资源或更改资源配置五其中包括设备相关函数VCI_CloseDeviceVCI_ResetCANVCI_ReadCANStatus VCI_ClearBuffer VCI_ReceiveÒ»°ãº¯Êý¶¼ÓÐDWORD DevType参数ISA-9620接口卡的类型号为9ÄÇô½Ó¿Úº¯ÊýÖеÄDevType设为9¿É¼ûËäÈ»º¯Êý²ÎÊý¸öÊý½Ï¶àʹÓÃʱҲ·Ç³£·½±ãVCI_OpenDevice //打开接口卡设备VCI_CloseDevice //关闭接口卡设备VCI_InitCAN //初始化CAN控制器VCI_StartCAN //CAN总线启动进入工作模式VCI_ResetCAN //CAN总线进入复位模式VCI_ReadCANStatus //读取CAN控制器状态VCI_GetReceiveNum //获得当前接收缓冲数据的帧数量VCI_ClearBuffer //清除接收缓冲区VCI_Transmit //发送CAN信息帧VCI_Receive //接收CAN信息帧VCI_ReadBoardInfo //保留函数尚未被非智能卡使用DOS驱动接口库(BC3.1版本)不支持S编译模式(Small)MDOS驱动接口库与基于Windows的接口函数功能及用法基本一致请参考drv.h和相关例子没有驱动程序安装的需要DWORD DevType2DWORD DevIndex²ÎÊýReserved用于指定板卡物理基地址和中断请求关于X和Y的计算方法请参考硬件安装说明Y=0x0F则Reserved参数为DWORD Reserved=(0xCF00L << 16) | 10; // 注意的使用发送缓冲大小仅为1帧4¼´²»Ö§³Ö³¬Ê±µÈ´ý»úÖÆ打开关闭设备要注意哪些事项当一个进程成功打开设备后开设备在同一进程中VCI_OpenDevice和VCI_CloseDevice函数一般在应用程序初始化和退出时只需要调用一次若能确定当前端口不再需要使用时使当前CAN 端口脱离CAN总线初始化CAN控制器时波特率应该如何设置例如100K波特率Timing0Çë²ÎÕÕSJA1000数据手册自行计算注意用户自定义波特率时要根据该时钟频率计算哪些VCI_CAN_OBJ的结构成员无效不必理会被忽略的部分typedef struct _VCI_CAN_OBJ{UINT ID; //帧IDUINT TimeStamp; //此成员被ISA-9620非智能卡忽略0BYTE SendType; //发送格式1单次发送3单次自发自收BYTE RemoteFlag; //远程帧或数据帧标志;0=数据帧QISA-9620设备驱动提供16帧软件发送缓冲FIFO·¢ËÍÉ豸µÄ·¢ËÍËÙ¶ÈÓɵ±Ç°¼ÆËã»úÈíÓ²¼þÐÔÄܾö¶¨1Mbps)ÕâÑùÓû§¿ÉÔÚÓ¦Óñà³ÌÖÐÊʵ±Ìí¼ÓÑÓʱÒÔ½µµÍISA-9620接口卡的发送速度 发送过程中每一帧都有超时限制一次发送多帧时最后一帧发送超时为2秒发送超时一般由于CAN总线繁忙且当前节点优先级较低时发生用户可以编程实现重发(一般中低速网络极少发生发送超时事件)如何更好的使用VCI_Receive函数ULONG __stdcall VCI_Receive(DWORD DevType, //设备类型号设备驱动提供100000帧软件接收缓冲区当软件接收缓冲数据溢出时设备驱动程序将调用VCI_ResetCAN复位CAN总线注意软件缓冲溢出和CAN控制器硬件缓冲溢出都是使用该标志位函数内部封装一个Block(阻塞)函数它为VCI_Receive指定一个超时返回时间当WaitÈô½ÓÊÕ»º³åΪ¿ÕÔò·µ»Ø0Èôº¯Êýµ÷ÓÃʱ½ÓÊÕ»º³åÖÐÒѾ-ÓÐÊý¾ÝÔòÂíÉÏ·µ»Ø³É¹¦¶ÁÈ¡µÄÖ¡Êýº¯Êý½«µÈ´ýÒ»¸öÖ¸¶¨µÄ³¬Ê±µ½´ï»ò½ÓÊÕµ½Êý¾Ý²Å·µ»Ø³É¹¦½ÓÊÕµÄÖ¡Êý0xFFFFFFFF时为无限等待直到有数据接收到无限等待更应该注意不要求读接收缓冲区注意若只能通过查询缓冲中接收数量再调用VCI_Receive函数的用户一般应该把Wait设为0如何处理应用中产生的错误函数调用错误一般由参数错误引起类型号错误等还有的是对未打开的设备进行操作根据具体函数调用情况都有相应的Win32标准错误码提供这部分程序除错工作一般应该在设计时完成它一般由CAN网络故障引起如波特率设置不一致几乎所有(可预见性的)CAN通信错误都已经在设备驱动中处理CAN Status结构成员遵照SJA1000T数据手册进行描述这将更详细和直观在设计中错误分析是必要的环节值得一提的是数据溢出中断错误(1) 100000帧接收缓区冲溢出这时用户应该优化应用程序或更改通信策略(2) CAN控制器硬件接收缓冲区溢出这是一种最严重的错误或协调其余节点适当降低发送速度ISA-9620设备响应速度如何首先帧流量以及总线占有率之间的关系在CAN总线负载接近100%的情况下标准数据帧在100Kbps波特率下的最高帧速率不超过800帧/秒因此在较低的CAN波特率下对CAN接口卡的性能没有太大的要求所以对于高速的波特率来说一般也不容易丢帧由于ISA-9620属于ISA非智能接口卡建议使用CPU主频大于600MHz的计算机系统可选用ZLGCAN的其他接口卡产品USBCAN-II接口卡等高速设备系统进入待机或睡眠状态是否影响接收这时所有处理停止若有ISA-9620设备打开驱动程序将尝试阻止系统进入待机或睡眠状态使用ISA-9620设备时建议用户禁止系统的待机和睡眠功能驱动安装时在基本配置中无法找到可用的内存范围该如何处理以增加对其他的内存地址的支持[ISA9620B_Config1]其内容如下[ISA9620B_Config1]ConfigPriority=DESIREDMemConfig=200@000C8000-000C81FF%ffffffff ; MemChip0 !!!MemConfig=200@000C8200-000C83FF%ffffffff ; MemChip1 !!!IRQConfig=3,4,5,6,7,9,10,11,12,15; IRQNUM !!!在此我们关心的是红色高亮部分XY的合法范围是C0至FF共64种组合(在提供的驱动INF文件中在Win98操作系统只提供3种基本配置)×¢ÒâÁ½¸öMemConfig的红色高亮部分必须修改要修改内存基地址为0x000FC000[ISA9620B_Config1]ConfigPriority=DESIREDMemConfig=200@000FC000-000FC1FF%ffffffff ; MemChip0 !!!MemConfig=200@000FC200-000FC3FF%ffffffff ; MemChip1 !!!IRQConfig=3,4,5,6,7,9,10,11,12,15 ; IRQNUM !!!然后在设备驱动安装时选择就是所修改的内容了是否提供测试程序QISA9620B.sys(v1.0)提供错误调试信息输出可以免除开发初期分析CAN Status的麻烦它支持内核驱动调试信息的输出显示它不需要安装强烈推荐使用声明则均以产品用户手册为准恕不另行通知六从本公司销售之日起在正确使用和正常工作情况下将可得到免费的维修服务12´íÎóʹÓûò²úÆ·Ð޸Ķøµ¼ÖµĹÊÕÏ6.4 软件升级ISA-96XX非智能CAN接口卡的驱动软件终生免费升级Cantools@技术支持专业主页http附录APHILIPS正式授权含CAN-bus汽车传感器PHILIPS半导体的领先技术ODVA协会的支持至现在接口设备能够为客户提供从工具方案涉及CAN-bus多个行业与应用领域并已在多个领域中通过严格的实际运行考验CAN-bus 专用芯片l P87C591 集成PeliCAN控制器的增强型8位单片机l LPC2119/2129 集成2路CAN控制器的ARM芯片l LPC2219/2229 集成6路CAN控制器的ARM芯片l SJA1000 独立CAN控制器l PCA82C250/251 通用CAN收发器l TJA1050/1040/1041 高速CAN收发器l TJA1054 容错的CAN收发器l TJA1020 标准LIN收发器l 各类DC/DC电源模块l 软件源码P87C591 PeliCAN模块DeviceNET & CANopenCAN-bus 仿真器/实验仪l TKS-591S HOOKS仿真器l TKS-591B HOOKS仿真器l DP-51+ 单片机仿真实验仪l DP-51H 单片机数据通讯仿真实验仪l DP-668 单片机与TCP/IP仿真实验仪CAN-bus 开发套件l CANstarter-I CAN-bus开发套件CAN-bus 接口卡l ZLGCANTEST 通用CAN-bus测试软件l PCI-5110 单路智能CAN接口卡l PCI-5121 双路智能CAN接口卡l PCI-9810 单路非智能CAN接口卡l PCI-9820 双路非智能CAN接口卡l USBCAN-I 单路智能CAN接口卡l USBCAN-II 双路智能CAN接口卡l ISA-9620 双路非智能CAN接口卡l ISA-5420 双路智能CAN接口卡l CAN232 智能CAN接口卡l CANlite 便携式CAN接口卡l CANmini 微型CAN接口卡CAN-bus 转换器l CANrep-A 智能全隔离CAN中继器l CANrep-B 隔离CAN中继器l CAN485 智能CAN转换卡l CAN232B 智能CAN转换卡CAN-bus 分析仪l CANalyst-I 单路CAN分析仪l CANalyst-II 双路CAN分析仪CAN-bus 技术方案l CAN-bus 通讯/测试/控制实验室l 汽车电子通讯控制l RS485 网络升级l 智能楼宇系统l 电力通讯控制l 工业自动化控制l 矿业远程通讯l DeviceNET 应用我们立志成为国内第一流的CAN-bus开发应用的团队请浏览技术支持专业主页httpcan@和cantools@用户可以直接从周立功公司专业网站下载大部分CAN-bus的数据手册或购买相关的开发工具而获得附录B°üÀ¨Á½²¿·Öǰ3个字节为信息部分数据长度报文识别码第7位表示帧格式FF第6位表示帧的类型RTR=1表示为远程帧l 字节211位有效11为数据帧的实际数据B.2 CAN2.0B扩展帧ID.28-ID.21 l 字节1为帧信息FF FF 第6位表示帧的类型RTR=1表示为远程帧l 字节2Æä¸ß29位有效13为数据帧的实际数据广州周立功单片机发展有限公司 www.zlgmcu.com - 19 - 附录C BTR1ϱíÁгöÁËÒ»×éÍÆ¼öµÄBTR0±ê×¢*符号的值是由CiA 协会推荐的标准值用户也可以根据SJA1000器件配套的参考资料自行计算合适的寄存器BTR0P87C591的CAN 通讯波特率采用同SJA1000一致的计算方法lll。
广州周立功单片机科技有限公司修订历史目录1. 产品简介 (1)1.1产品特性 (1)1.2产品命名 (2)1.3产品选型 (2)1.4性能参数 (3)2. 硬件结构 (5)2.1I/O引脚信息 (5)2.2管脚说明(按管脚顺序划分) (6)2.3管脚说明(按功能定义划分) (11)2.4管脚说明(按管脚复用划分) (14)3. 电气参数 (18)3.1供电参数 (18)3.2PSWITCH输入特性 (18)3.3GPIO电气参数 (18)3.4ADC电气特性 (19)4. 典型应用 (20)5. 产品图片 (21)6. 机械尺寸 (22)7. 免责声明 (23)1. 产品简介MiniARM M28A-T核心板是广州周立功单片机科技有限公司精心设计的一款低功耗、高性能的核心板。
核心板处理器采用飞思卡尔基于ARM9内核的i.MX28系列芯片,主频454MHz,支持UART、I2C、I2S、Ethernet、USB、SSP等众多通讯接口,并支持16位TFT 液晶显示和电阻式触摸屏,适用于通用嵌入式工业控制和消费电子市场。
处理器集成电源管理单元,可有效简化系统电源设计,降低成本,减小系统功耗,使得该处理器非常适用于低成本、低功耗、高性能的便携设备。
MiniARM M28A-T核心板集成了DDR2、NAND Flash、硬件看门狗等,可有效缩短用户基于M28A-T核心板进行产品开发的周期。
核心板通过严格的EMC和高低温测试,保证核心板在严酷的环境下也能稳定工作。
1.1 产品特性◆CPU:Freescale i.MX283/ i.MX287;◆运行频率:454MHz;◆支持64/128M DDR2;◆支持64/128MB NAND FLASH;◆内置电源管理单元-PMU;◆内置TCP/IP协议栈;◆支持独立硬件看门狗;◆支持多种文件系统,支持SD/MMC卡、U盘读写;◆支持1路USB2.0 HOST、1路USB2.0 OTG;◆支持2路10M/100M以太网接口,支持交换机功能;◆支持多达6路串口、2路CAN;◆支持1路SD Card接口,1路SDIO;◆1路I²C、1路SPI、1路I²S及4路12位ADC;◆内置LCD控制器,分辨率最高达800×480;◆支持4线电阻式触摸屏接口;◆支持JTAG调试接口;◆支持多种升级方式;◆采用6层PCB工艺;◆尺寸30mm×48mm;◆低工作电压:3.3V±2%;◆采用高精度板对板连接器;◆所有元器件均符合工业级-40℃~+85℃要求。