- 0
- 0
- 约2.88万字
- 约 163页
- 2018-05-29 发布于湖北
- 举报
固件结构和数据流 各模块程序的分工 硬件提取层:对单片机的I/O口、数据总线等硬件接口进行操作。 D12命令接口:对D12器件进行操作的模块子程序集 中断服务程序:当D12向单片机发出中断请求时,读取D12的中断传输来的数据,并设定事件标志“EPPFLAGS”和Setup包数据缓冲区“CONROL_XFER”传输给主循环程序。 标准请求处理程序:对USB的标准设备请求进行处理。 厂商请求处理程序:对用户添加的厂商请求进行处理。 主循环程序:发送USB请求、处理USB总线事件和用户功能处理等。 下面是固件程序主循环的部分代码: #includereg51.h#define D12_COMMAND (*(unsigned char xdata *)0xff01)#define D12_DATA (*(unsigned char xdata *)0x7f02)extern void D12_int();sbit D12_suspend=P3^4;sbit D12_int_n=P3^2;void main(void) {unsigned char ist;P3=0xff;D12_COMMAND=0xf3;D12_DATA=0x06;//设置模式0D12_DATA=0x03;//初始化频率D12_COMMAND=0xd0;D12_DATA=0x80;//设置地址0使能D12_COMMAND=0xf3;//连接主机D12_DATA=0x16;While(1){? if(!D12_int_n){? D12_int();}}} 4.USB设备接口数据通信的两个阶段 USB设备接口的一系列状态转换和不同类型的数据传输共同构成了USB数据通信的两个阶段,即列举阶段和应用阶段。 为列举,所有设备的接口必须都支持控制传输、标准USB请求和端点0功能。 在主机一侧,应用程序可以用标准的Windows API函数从指定的设备读取数据或将数据写入设备。 在设备一侧,主要工作是对配置过的端点进行端点操作,同时对一些寄存器的状态进行实时处理。 上位机的程序主要调用4个API函数。 Philips为用户提供了D12的驱动程序,但用户需根据自己的要求更改inf文件,然后在Windows DDK中重新编译连接生成新的驱动程序。 7.4.5 单总线(1-Wire) 1.概述 单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。 具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。 1-wire 单总线适用于单个主机系统,能够控制一个或多个从机设备。 当只有一个从机位于总线上时,系统可按照单节点系统操作,而当多个从机位于总线上时,则系统按照多节点系统操作。 单主机多节点系统 2.单总线的工作原理 设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线。 单总线通常要求外接一个约为4.7kW的上拉电阻,这样,当总线闲置时,其状态为高电平。 主机和从机之间的通信可通过3个步骤完成, 初始化1-Wire器件、识别1-Wire器件和交换数据。 由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问1-Wire器件都必须严格遵循单总线命令序列,即初始化、ROM命令、功能命令。如果出现序列混乱,1-Wire器件将不响应主机(搜索ROM命令、报警搜索命令除外)。 单总线的硬件接口示意图 ROM命令 ROM命令 搜索ROM(F0H) 识别单总线上所有的1-Wire器件的ROM编码 读ROM(33H)(仅适合单节点) 直接读1-Wire器件的序列号 匹配ROM(55H) 寻找与指定序列号相匹配的1-Wire器件 跳跃ROM(CCH)(仅适合单节点) 使用该命令可直接访问总线上的从机设备 报警搜索ROM(Ech)(仅少数器件支持) 搜索有报警的从机设备 ROM命令说明 命 令 描 述 命令 代码 发送命令后,单总线上的响应信息 注释 转换温度 启动温度转换 44h 无 ① 读暂存器 读全部的暂存器内容,包括CRC字节 BEh DS18B20 传输多达9个字节至主机 ② 写暂存器 写暂存器第2、3 和4个字节的数据(即TH,TL和配置寄存器) 4Eh 主机传输3字节数据至DS18B20 ③ 复制暂存器 将暂存器中的TH,TL和配置字节复制到EEPROM中 48h 无 ① 回读EEPROM 将TH,TL和配置字节从EEPROM回读至暂存器中 B8h DS18B20传送回读状态至主机 DS18B20功能命令集 3.信号方式 所有的单总线器件都要遵循严格的通信协议,以保证数据的完整性。1-wire协议定义了复位脉冲
原创力文档

文档评论(0)