0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I²C接口将小型闪存卡连接到微控制器

星星科技指导员 来源:ADI 作者:ADI 2023-02-14 10:19 次阅读

本应用笔记说明如何使用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接口是一个合理的选择,因为许多电路已经使用它来连接外部ADCDAC实时时钟和其他元件。

pYYBAGPq9LGAU2TSAACmkDuxncE791.png

图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卡。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117723
  • I²C总线
    +关注

    关注

    0

    文章

    14

    浏览量

    2102
收藏 人收藏

    评论

    相关推荐

    SDRAM存储连接到高性能微控制器的设计方案

    描述此参考设计演示了如何实现 SDRAM 存储并通过接口连接到高性能微控制器 TM4C129XNCZAD。为了实现此设计,其中采用了该
    发表于 08-30 09:31

    怎么Fieldfox连接到微控制器

    我正在构建一个微控制器控制的转盘,用于测量天线辐射模式。阶段1简单地平台定位在0到360度的任何位置。我最不想做的是使用我的Fieldfox频谱分析仪以单一频率读取信号电平。有了这
    发表于 02-12 12:35

    【转】为物联网程序存储应用选择和使用正确的闪存技术

    了一种称为读取干扰管理 (RDM) 的功能。在 Swis***it 的 RDM 中,闪存卡控制器会跟踪每个闪存块的读取操作次数。当块达到内部定义的读取操作次数时,控制器
    发表于 07-30 11:19

    怎么为微型闪存卡编程

    我刚刚开始为微型闪存卡编程。我正在使用C ++中的Xilinx SDK和编写代码。我可以使用new实例化一个类吗?我读到free()和malloc()不是线程安全的,那么这意味着new和delete
    发表于 03-13 08:47

    如何微控制器与FPGA连接

    晚上好,如何微控制器与FPGA连接?如何使用微控制器配置FPGA?如何使用微控制器或软件程序为FPGA创建.bit文件以使用
    发表于 03-25 09:22

    STM32:32位微控制器功能

    STM32:32位微控制器功能:1、串口USART:接外设2、内部集成电路I2C:用于与I2C接口设备通信3、串行通讯接口SPI:用于与SP
    发表于 08-11 08:02

    实现SDRAM存储并通过接口连接到高性能微控制器TM4C129XNCZAD的设计

    描述此参考设计演示了如何实现 SDRAM 存储并通过接口连接到高性能微控制器 TM4C129XNCZAD。为了实现此设计,其中采用了该
    发表于 09-27 07:02

    能否SENSEA/SENSEB引脚连接到微控制器ADC输入以实时监控电流?

    我们能否SENSEA/SENSEB引脚连接到微控制器ADC输入以实时监控电流?
    发表于 01-04 08:08

    如何EVAL6498L连接到微控制器

    您好,我是栅极驱动评估板 EVAL6498L 的第一次用户,我正在尝试了解如何将它连接到控制器和 MOSFET,我正在使用此文档。假设我从微控制器 PWM1 和 PWM2 发送 2
    发表于 01-06 06:24

    如何通过专用I2C(SCL2、SDA2)接口连接微控制器

    我可以通过专用 I2C(SCL2、SDA2)接口连接微控制器,还是仅供 SAM 单元使用? 在新的 IC 上,地址应为 010110,但我无法从 IC 获得读取 ID 寄存
    发表于 04-23 08:33

    请问是否有任何参考设计振荡连接到MKW38微控制器的XTAL引脚?

    请问是否有任何参考设计振荡连接到 MKW38 微控制器的 XTAL 引脚。
    发表于 04-25 07:41

    如何从另一个微控制器更新ESP8266上的闪存

    ,但现在我需要能够使用 Teensy 新图像闪存到 ESP8266 上。我开始这个项目时理所当然地认为“某处”已经为此编写了一个 C 程序;但是,我还没有发现任何东西。谁能指出我需要什么才能使用另一个
    发表于 05-11 07:08

    如何ESP连接到微控制器

    你好! 我有一个问题:这是 ESP 的最小电路。 我想用微控制器驱动它。我的问题是: 1) RST 和 EN 引脚通过电阻连接到 Vcc。如果我想将它连接到 STM32(连接到 STM
    发表于 05-15 08:30

    闪存卡类型

    闪存卡类型 闪存卡(Flash Card)是利用闪存(Flash Memory)技术达到存储电子信息的存储器,一般应用在数码相机,掌上电脑,MP3等小型数码产品中
    发表于 01-09 14:54 957次阅读

    如何实现SDRAM存储器并通过接口连接到高性能微控制器

    电子发烧友网站提供《如何实现SDRAM存储器并通过接口连接到高性能微控制器.zip》资料免费下载
    发表于 09-07 09:31 1次下载
    如何实现SDRAM存储器并通过<b class='flag-5'>接口</b><b class='flag-5'>连接到</b>高性能<b class='flag-5'>微控制器</b>