<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

I2C接口將小型閃存卡連接到微控制器

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-14 10:19 ? 次閱讀

本應用筆記說明如何使用I2C I/O擴展器將CF卡連接到微控制器的I2C接口。解釋了用于讀取和寫入數據的軟件命令。MAX7311 I/O端口擴展器用于設計電路。

數據記錄通常需要大量內存來存儲測量數據,尤其是在監控通道數量很大的情況下。更復雜的是,小型微控制器的內部數據存儲器(RAM和EEPROM)有限,并且缺少地址和數據端口,這通常妨礙了外部存儲器的添加。圖1電路使用16位I2C I/O擴展器(U1,MAX7311)將緊湊型閃存(CF)卡連接到微控制器的I2C接口。I2C接口是一個合理的選擇,因為許多電路已經使用它來連接外部ADC、DAC、實時時鐘和其他元件。

pYYBAGPq9LGAU2TSAACmkDuxncE791.png

圖1.該電路采用16位I/O擴展器(MAX7311)將緊湊型閃存連接器連接到微控制器的I2C總線。

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的中斷輸出應連接到微控制器上的中斷輸入。因此,通過放置或移除跳線產生的中斷可用于觸發處理器切換到另一張卡。

軟件

兩個I2C功能使微控制器能夠讀寫。如果它具有硬件I2C接口,則功能可以非常簡單。首先,讀取和寫入MAX7311端口需要兩個功能:

Write_MAX7311(slv,prt,dat)此過程啟動I2C總線,將數據字節數據發送到MAX7311上具有從地址slv的PRT端口。

Read_MAX7311(SLV,PRT)此過程啟動I2C總線,從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

    文章

    6868

    瀏覽量

    148304
  • 寄存器
    +關注

    關注

    30

    文章

    5164

    瀏覽量

    118135
  • I2C總線
    +關注

    關注

    0

    文章

    14

    瀏覽量

    2108
收藏 人收藏

    評論

    相關推薦

    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 ?968次閱讀

    如何實現SDRAM存儲器并通過接口連接到高性能微控制器

    電子發燒友網站提供《如何實現SDRAM存儲器并通過接口連接到高性能微控制器.zip》資料免費下載
    發表于 09-07 09:31 ?1次下載
    如何實現SDRAM存儲器并通過<b class='flag-5'>接口</b><b class='flag-5'>連接到</b>高性能<b class='flag-5'>微控制器</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>