




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于CAN总线的自动抄表系统 智能节点结构图 处理器 AT89S52 AT89S52的内部结构简介1 八位8031CPU 负责运算和控制各个功能部件 2 振荡电路 一个片内振荡器和时钟电路 最高允许振荡频率为24MHz 3 总线控制部件 4个8位的双向可寻址I O口 每个口即可用做输入也可用做输出 4 中断控制部件 多个优先级的嵌套中断结构 8级中断 并可实现多个优先级的嵌套 5 片内Flash存储器 用来存放程序或者一些原始数据和表格6 片内RAM 用来存放经常读写的数据 7 串行I O接口 一个全双工UART 通用异步接受模式 的串行接口 通过它可以和计算机或者其他外设设备进行通信 8 定时器 3个16位的定时 记数器 用来对外部事件进行记数 也可以设置成定时器 并根据定时和记数的结果对单片机进行控制 AT89S52的封装 引脚及功能介绍 1 Vcc 电源电压 2 GND 接地 3 P0口 P0口是一组8位漏极开路型双向I O口 也即地址 数据总线复用口 作为输出口用时 每位能吸收电流的方式驱动8个TTL逻辑门电路 对端口写 1 可作为高阻抗输入端用 在访问外部数据存储器或程序存储器时 这组口线分时转换地址 低8位 和数据总线复用 在访问期间激活内部上拉电阻 在Flash编程时 P0口接收指令字节 而在程序校验时 输出指令字节 在校验时 要求外接上拉电阻 4 P1口 P1是一个内部带有上拉电阻的8位双向I O口 P1的输出缓冲级可驱动 吸收或输出电流 4个TTL逻辑门电路 对端口写 1 通过内部的上拉电阻把端口拉到高电平 此时可作输入口 作输入口使用时 因为内部存在上拉电阻 某个引脚被外部信号拉低时会输出一个电流 Ig 5 P2口 P2是一个带有内部上拉电阻的8位双向I O口 P2的输出缓冲级可驱动 吸收或输出电流 4个TTL逻辑门电路 对端口写 1 通过内部的上拉电阻把端口拉到高电平 此时可作输入口 作输入口使用时 因为内部存在上拉电阻 某个引脚被外部信号拉低时会输出一个电流 Ig 在访问外部程序存储器或16位地址的外部数据存储器 例如执行MOVX DPTR指令 时 P2口送出高8位地址数据 在访问8位地址的外部数据存储器 如执行MOVX RI指令 时 P2口线上的内容 也即特殊功能寄存器 SFR 区中R2寄存器的内容 在整个访问期间不改变 6 P3口 P3口是一住带有内部上拉电阻的8位双向I O P3口输出缓冲级可驱动 吸收或输出电流 4个TTL逻辑电路 对P3口写入 1 时 它们被内部上拉电阻拉高并可作为输入端口 作输入端时 被外部拉低的P3口将用上拉电阻输出电流 Ig P3口除了作为一般的I O口线外 更重要的用途是它的第二功能 如表3所示 7 RST 复位输入 当振荡器工作时 RST引脚出现两个机器周期以上高电平将使单片机复位 8 ALE PROG 当访问外部程序存储器或数据存储器时 ALE 地址锁存允许 输出脉冲用于锁存地址的低8位字节 即使不访问外部存储器 ALE仍以时钟振荡频率的1 6输出固定的正脉冲信号 因此它可对外输出时钟或用于定时目的 要注意的是 每当访问外部数据存储器是将跳过一个ALE脉冲 9 PSEN 程序储存允许 PSEN 输出是外部程序存储器的读选通信号 当AT89C51由外部程序存储器取指令 或数据 时 每个机器周期两次PSEN有效 即输出两个脉冲 在此期间 当访问外部数据存储器 这两次有效的PSEN信号不出现 10 EA VPP 外部访问允许 欲使CPU仅访问外部程序存储器 地址为0000H FFFFH EA端必须保持低电平 接地 需注意的是 如果加密LBI被编程 复位时内部会锁存EA端状态 如EA端为高电平 接Vcc端 CPU则执行内部程序存储器中的指令 Flash存储器编程时 该引脚加上 12V的编程允许电源Vpp 当然这必须是该器件是使用12V编程电压Vpp 11 XTAL1 振荡器反相放大器的及内部时钟发生器的输入端 12 XTAL2 振荡器反相放大器的输出端 控制器 SJA1000 SJA1000是使用于汽车和一般工业环境的独立CAN总线控制器 它具有完成CAN高性能通信协议所要求的全部必要条件 在具备基本CAN模式BasicCAN的同时新增加了增强CAN模式PeliCAN模式 可支持CAN2 0A和CAN2 0B协议 1 SJA1000的特点1 具有扩展的接收缓冲器 64字节的FIFO结构 2 支持11位和29位识别码 3 位速率可达1Mbit s 4 24MHz的时钟频率 5 支持与不同微处理器的接口 6 可编程的CAN输出驱动配置 7 增强了温度范围 40 125 SJA1000由CAN核心模块 发送缓冲区 接口FIFO 验收滤波器和接口管理逻辑组成 CAN核心模块主要负责CAN信息帧的收发和CAN协议的实现 接口管理逻辑负责SJA1000与主控制器的接口 在进行数据传输时 主控制器把标识符和数据送入发送缓冲区后请求发送 从而启动CAN核心模块读取发送缓存区中的数据 再按CAN协议封装成完整的CAN信息帧 通过收发器发往总线 发送缓存区的容量为13字节 验收滤波器单元对接收到的信息进行处理后送到接收FIFO中 接收FIFO为64字节 CAN控制器工作模式的设定 数据的发送和接收等都是通过相关寄存器来实现的 时钟分频寄存器OCR用于设定SJA1000工作于BASICCAN还是PeliCAN 还用于CLKOUT引脚输出时钟频率的设定 在上电初始化控制器时必须首先设定 在工作模式下 控制寄存器CR用于控制CAN控制器的行为 可读可写 命令寄存器CMR只能写 状态寄存器SR只能读 IR ACR AMR BTR0 BTR1 OCR在工作模式下读写无意义 通常 在系统初始化时 先使CR 1 SJA1000进入复位模式 在此模式下IR ACR AMR BTR0 BTR1及OCR均可读可写 此时设置相应的初值 当退出复位模式时 SJA1000即按复位时设定的相应情况工作于工作模式 除非再次使芯片复位 否则上次设定的值不变 当需要发送信息时 若发送缓冲器空闲 由CPU控制信息写入TXB 再由CMR控制发送 当接收缓冲器RXFIFO未满且接收信息通过了ASP 则接收到的信息被写入RXFIFO 可通过两种方法读取接收到的信息 一种方法是 在中断被使能的情况下 由SJA1000向CPU发中断信号 CPU通过SR及IR可以识别该中断 并读取数据释放接收缓冲器 另一种方法是直接读取SR 查询RXFIFO的状态 当有信息接收时 读取该信息并释放接收缓冲器 当接收缓冲器中有多条信息时 当前的信息被读取后 接收缓冲器有效信号会再次有效 通过中断方式或查询方式可以再次读取信息 直到RXFIFO中的信息被全部读出为止 当RXFIFO已满 如还有信息被接收 此接收信息不被保存 且发出相应的缓冲器溢出信号供CPU读取处理 收发器 PCA82C250 CAN总线收发器PCA82C250提供协议控制器和物理传输线路之间的接口 可以用高达1Mbit s的速率在两条有差动电压的总线电缆上传输数据 发送模块软件总体流程 发送模块通过中断接收外部的脉冲信号 并对其进行处理 然后将处理好的数据加上识别码 组成一帧信息后放入自定义的发送缓冲区 并调用SJA1000的发送函数来发送数据 SJA1000的发送函数将MCU MicroControllerUnit 发送缓冲区的一帧信息对应的放入发送缓冲器 CAN地址16开始 然后将命令寄存器的发送位置一 启动数据的发送 如果有更多的数据需要发送 则会产生发送中断来发送更多的数据 处理报警信号时同理 接收模块软件总体流程 接收模块通过接收中断来接收数据 CAN总线传来的数据通过82C250收发器存放在SJA1000控制器的接收缓冲器当中 并同时会产生一个接收中断 通知MCU在接收缓冲器当中有数据需要接收 在中断使能的情况下 MCU会响应此中断执行相应的中断程序 中断程序会调用SJA1000的接收函数来接收数据 接收函数将SJA1000接收缓冲器 从CAN地址16开始 当中的一帧信息按字节依次读出并存放到MCU自定义的接收缓冲区当中 然后释放接收缓冲器 若有更多的信息需要接收 则会产生新的接收中断 将剩下的信息依次读出 接收电表的数据和报警的数据同理 只是对接收到的数据处理的方法不同 电表数据会被送到数码管显示出来 而报警数据则是用来驱动蜂鸣器报警 SJA1000寄存器初始化 发送数据 中断控制的发送当SJA1000正在发送报文时发送缓冲器被写锁定 所以在放置一个新报文到发送缓冲器之前主控制器必须检查状态寄存器的 发送缓冲器状态 标志 TBS 发送缓冲器被锁定主控制器将新报文暂时存放在它自身的存储器里并设置一个标志 表示一个报文正在等待发送 启动传输报文会在中断服务程序中处理 程序在当前运行的发送末端被初始化 从CAN控制器收到中断后 主控制器会检查中断类型 如果是发送中断它会检查是否有更多的报文要被发送 一个正在等待的报文会从从临时存储器复制到发送缓冲器 表示要发送更多信息的标志被清除 置位命令寄存器发送请求 TR 标志使SJA1000启动发送 发送缓冲器被释放主控制器将新报文写入发送缓冲器并置位命令寄存器发送请求TR标志 这将SJA1000启动发送 在发送成功结束时CAN控制器会产生一个发送中断 查询控制的发送 CAN控制器的发送中断在这类传输控制中禁能 只要SJA1000正在发送报文发送缓冲器就被写锁定 因此在将新报文放入发送缓冲器之前 主控制器必须检查状态寄存器的 发送缓冲器 状态标志 TBS 发送缓冲器被锁定周期查询状态寄存器主控制器等待直到发送缓冲器被释放 发送缓冲器被释放主控制器将新的报文写入发送缓冲器并置位命令寄存器 发送请求 TR 标志 此时SJA1000将启动发送 接收数据 根据CAN协议的规范 报文的接收是由CAN控制器SJA1000独立完成的 收到的报文通过收发器存放在接收缓冲器 可以发送给主控制器的报文 由状态寄存器的接收缓冲器状态标志 RBS 和接收中断标志 RI 标出 如果使能 主控制器会将这条信息传送到本地的报文接收缓冲区 然后释放接收缓冲器以便接收更多的报文 并对接收的报文进行处理和操作 接收过程由SJA1000的中断请求或者查询SJA1000的控制段状态标志来控制 中断控制的接收 CAN控制器的接收中断以及SJA1000通迅主控制器的外部中断使能 而且优先级高于中断控制报文 中断使能标志位于控制寄存器里 对于BasicCAN模式 或位于中断使能寄存器里 对于PeliCAN模式 如果SJA1000已接收一个报文 而且报文已通过验收滤波器并放在接收FIFO 那么会产生一个接收中断 因此主控制器能立刻作用 将收到的报文发送到自己的报文存储器 然后通过置位命令寄存器的相应标志 RRB 发送一个释放接收缓冲器命令 接收FIFO里的更多报文将产生一个新的接收中断 因此不可能将所有在接收FIFO中的有效信息在一个中断周期内读出 整个接收过程在一个中断程序中完成 而且和主程序没有相互作用 如果可行的话 报文的处理甚至也可以在中断程序里完成 查询控制的接收 主控制器如常读SJA1000的状态寄存器 检查接收缓冲状态标志 RBS 看是否收到一个报文 这些标志的定义位于控制段的寄存器 接收缓冲器状态标志表示 空 也就是没有收到报文 主控制器继续当前的任务直到收到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年精神心理学抑郁症症状评估策略考核试题答案及解析
- 2025-2030功率模块封装可靠性测试标准升级与认证体系研究报告
- 2025年妇产科手术操作规范性评估试题答案及解析
- 2025年新能源汽车电池安全性能测试与评价方法报告
- 2025年工业污染场地修复技术实施与成本效益跟踪报告
- 2025年公司安全操作试题及答案
- 2025年太阳能硅片硅碇行业市场深度分析报告:技术创新助力发展
- 2025年医养结合养老机构运营策略与产业链优化报告
- 2025年医院环境卫生学监测及临床常用消毒灭菌效果监测试题及答案
- 2025年麻醉医师测试题库及答案
- 星地激光通信技术-洞察分析
- 诊所中药饮片清单汇编
- 《室外管网工程施工》课件
- 餐饮外卖窗口改造方案
- 糖尿病足报告
- 国有企业战略使命评价制度
- 吊车施工专项方案
- 合规风险管理制度
- 病毒课件教学课件
- 9月30日烈士纪念日缅怀先烈功绩弘扬先烈精神课件
- 2024年华东师大版八年级数学上册同步练习题及答案
评论
0/150
提交评论