摘要: 本应用说明说明如何使用I²C I/O扩展器将CF卡连接到微控制器的I²C接口。介绍了数据读取和数据写入的软件命令。设计电路采用MAX7311 I/O端口扩展器。
本应用说明说明如何使用I²C I/O扩展器将CF卡连接到微控制器的I²C接口。介绍了数据读取和数据写入的软件命令。设计电路采用MAX7311 I/O端口扩展器。
数据记录通常需要相当大的内存来存储测量的数据,特别是当被监测的通道数量很大时。更复杂的是,小型微控制器有限的内部数据存储器(RAM和EEPROM),以及它们缺乏地址和数据端口,往往阻碍了外部存储器的添加。图1电路使用16位I²C I/O扩展器(U1, MAX7311)将CF卡连接到微控制器的I²C接口。I²C接口是一个合理的选择,因为许多电路已经使用它来连接外部adc、dac、实时时钟和其他组件。
图1所示 该电路采用16位I/O扩展器(MAX7311)将紧凑型闪存连接器连接到微控制器的I²C总线
CF卡控制在内存映射模式与8位宽的数据总线。MAX7311的1号端口(I/O线0-7)连接CF卡的数据总线;端口2连接地址和控制信号。CF卡的数据寄存器可以通过端口1的输入和输出寄存器进行读写。端口2寻址正确的寄存器并产生读和写信号。
要写入特定的寄存器,首先将数据写入端口1,该端口配置为输出。接下来,使用相同的数据连续三次写入端口2,除了WR(N)引脚,它通过从1到0切换到1来生成写入信号。地址位A2-A0表示要写入的寄存器。CE低,RD(N)高,使能CF卡。一个类似的过程可以让你从一个特定的寄存器中读取数据。端口1用作输入端口,对端口2进行三次写操作后读取,端口2的RD(N)引脚通过从1到0再到1的切换产生读信号。在三个写入之后,电路读取端口1并使数据可用。三个地址位可以让你读、写和寻址八个内部寄存器:
地址 | 注册 | 地址 | 注册 |
0 x00 | 数据 | 0 x04 | 气缸低 |
0 x01 | 错误/功能 | 0 x05 | 筒高 |
0 x02 | 部门统计 | 0 x06 | 选择卡/头 |
0 x03 | 部门人数 | 0 x07 | 状态/命令 |
0x00寄存器用于主机和CF卡之间的数据交换。寄存器0x03、0x04、0x05和0x06用于指定读取或写入数据的轨道。每个磁道包含512个数据字节。处理器通过写入命令寄存器来指示重/写轨迹和其他功能。您可以读取状态和错误寄存器以获得状态(忙、数据就绪等)和错误条件。
端口2上的两个未使用引脚(I/ o 10和11)可用于驱动显示电路活动的led,或读取指示处理器使用或不使用该卡的跳线(由用户设置)。如果第二张CF卡与第二张MAX7311连接,处理器可以从一张卡切换到另一张卡;用户可以拔下卡并在上面处理数据,而不会干扰数据记录过程。使用专用的CF接口时,支持热插拔。在这种情况下,MAX7311的中断输出应该连接到微控制器上的中断输入。因此,通过放置或移除跳线产生的中断可以用来触发处理器切换到另一张卡。
两个I²C函数使微控制器能够读取和写入。如果它有一个硬件I²C接口,功能就会非常简单。首先,需要两个功能来读取和写入MAX7311端口:
Write_MAX7311 (slv prt dat)这个过程启动i2c总线并发送数据字节dat港口prt在MAX7311上使用从地址slv.
Read_MAX7311 (slv prt)这个过程启动I²C总线并从端口读取一个数据字节prt在MAX7311上使用从地址slv.
上面的函数用于创建另外两个函数,它们读取和写入CF卡寄存器:
Write_CF_REG (reg, dat)这个过程使用Write_MAX7311放置数据dat在端口1上。同样的过程用于放置寄存器地址注册在端口2上,与其他控制信号一起。写操作执行三次(切换WR(N))来产生写信号。
Read_CF_REG(注册)这个过程使用Write_MAX7311对cf卡寄存器寻址并产生读信号。的Read_MAX7311过程然后从寄存器中读取数据。
用于读取和写入卡寄存器的函数现在可以用于创建访问cf卡扇区的函数:
Write_CF(sec)这个过程使用Write_CF_REG在写操作中指定目标圆柱、磁头和扇区(寄存器0x03到0x06)。然后通过将0x30写入命令寄存器来配置CF卡的数据写入。Write_CF_REG然后执行512次以将数据(存储在全局数组中)写入数据寄存器。CF卡自动将此数据添加到当前轨道中。
Read_CF(sec)这个过程使用Write_CF_REG在读操作中指定目标圆柱、磁头和扇区。然后通过将0x20写入命令寄存器来配置CF卡以进行数据读取。Read_CF_REG然后执行512次,通过数据寄存器从轨道读取所有512字节,并将数据放入全局数组中。
如果微控制器的内部存储器太小,无法存储512字节的数据,则可以从数据采集发生的循环中写入扇区。即接收到每一个新的测量数据点后,可直接将其数值写入CF卡。关于控制CF卡的更多细节可以在compact-flash规范文档中找到,该文档可从www.compactflash.org下载。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308