本应用笔记说明如何使用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 来生成写入信号的 pin。地址位 a2–a0 指示要写入的寄存器。ce 低,而 rdn为高启用 cf 卡。类似的过程允许您从特定的寄存器读取。端口 1 用作输入端口,在三次写入端口 2 后读取,其中 rdnpin 通过从 1 到 0 切换到 1 来生成读取信号。三次写入后,电路读取端口 1 并使数据可用。这三个地址位允许您读取、写入和寻址八个内部寄存器:
地址 注册 地址 注册
0x00 数据 0x04 气缸低
0x01 错误/功能 0x05 气缸高
0x02 扇区计数 0x06 选择卡/头
0x03 扇区编号 0x07 状态/命令
寄存器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)此过程启动i²c总线,将数据字节数据发送到max7311上具有从地址slv的prt端口。
read_max7311(slv,prt)此过程启动i²c总线,从max7311端口prt读取数据字节,从地址为slv。
上述函数用于创建另外两个函数,它们读取和写入 cf 卡寄存器:
write_cf_reg(注册,dat)此过程使用 write_max7311 将数据 dat 放在端口 1 上。相同的过程用于将寄存器地址reg与其他控制信号一起放置在端口2上。写入执行三次(切换 wrn) 以生成写入信号。
read_cf_reg(注册)此过程使用write_max7311对cf卡寄存器进行寻址并生成读取信号。然后,read_max7311过程从寄存器读取数据。
可用于读取和写入卡寄存器的函数现在可用于创建访问 cf 卡扇区的函数:
write_cf(cyl,head,sec)此过程使用write_cf_reg在写入操作中指定目标柱面、缸盖和扇区(寄存器0x03到0x06)。然后,通过将0x30写入命令寄存器来配置cf卡进行数据写入。然后执行 512 次write_cf_reg,将数据(存储在全局数组中)写入数据寄存器。cf 卡会自动将此数据添加到当前轨道。
read_cf(cyl,head,sec)此过程使用 write_cf_reg 在读取操作中指定目标柱面、缸盖和扇区。然后,通过将0x20写入命令寄存器来配置cf卡进行数据读取。然后执行 512 次read_cf_reg,通过数据寄存器从轨道读取所有 512 个字节,并将数据放入全局数组中。
如果微控制器的内部存储器太小,无法存储 512 字节的数据,则可以从进行数据采集的环路中写入扇区。也就是说,在接收到每个新的测量数据点后,其值可以直接写入cf卡。
低压电路保护的改进解决方案
华为云CDN智能加速,为你开启加速新世界!
PCBA加工时为什么会有锡珠产生
三种碳化硅外延生长炉的差异
国内多地无人驾驶公交已经上路 但距离真正的无人驾驶依然有一段距离
I²C接口将小型闪存卡连接到微控制器
浅析TSC在汽车电子领域的业务及未来发展趋势
等离子抛光机与传统抛光的区别
双模块如何实现尽可能高的功率密度
关于苹果新iPhone的最新爆料
德国电信携手爱立信证明使用毫米波进行无线回传的可行性
TRH55FE、MSA55E、DFH55AL、HSR55LA、HSR55A、LWHT55B 直线导轨替换指南
EM78P372N SOP14,方案开发 程序开发 单片机开发
一亿像素的手机拍出来的照片真的比普通手机拍出来的好吗
9TB磁带仅卖403元 是当前容价比最极限的存储产品
关于未来汽车HMI界面设计的四个Tips
显同电子分享LED显示屏分类标准
如何制作运行Windows10的平板电脑
lightning接口内部结构详解
特斯拉开始向用户提供其新型全自动驾驶系统的Beta版