在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何配置硬件IIC

正點原子 ? 2022-03-31 15:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如何配置硬件IIC

IIC英文全稱:Inter Integrated Circuit,集成電路總線,是飛利浦公司在八十年代開發的一種串行、同步、半雙工總線。

IIC總線協議無非就是幾樣東西:起始信號、停止信號、應答信號、以及數據有效性。大家學習了正點原子的IIC實驗,應該很了解IIC時序。正點原子使用的是軟件模擬IIC,也就是用IO口模擬出IIC時序去通信。使用硬件IIC,就可以不用管時序信號,配置好之后就可以產生時序。雖說ST的硬件IIC很雞肋,但是某些方面還是比軟件模擬IIC稍微強一點。



下面列出一個硬件IIC和軟件IIC的對比表


e11dde04-af85-11ec-82f6-dac502259ad0.png





軟件IIC整個流程很清晰,假如出了bug,你能很快找到問題,硬件IIC就需要動用DS100示波器去看波形,波形的查看教程可以參考以下推文

嵌入式工程師必備技能—如何使用示波器查看IIC波形》

https://mp.weixin.qq.com/s/lnSORSbXeNJe-QVwW0EVbg


其實很多時候是在管腳上考量使用軟件IIC。硬件IIC雖然被聽說吐槽過千百遍,但是有些人還是有興趣想使用STM32的IIC外設的,那么本文就教一下大家使用硬件IIC,側重于使用(這里使用的是F1 HAL庫)。


首先,先看HAL庫給IIC定義好的結構體,這里主要講解IIC初始化結構體

e12c108c-af85-11ec-82f6-dac502259ad0.png

ClockSpeedIIC的傳輸速率,主要看從機,從機AT24C02是最大為400kHz,低于400kHz即可。

DutyCycleSCL線時鐘占空比,就是低電平與高電平的比值,沒有嚴格限制,選擇2:1或者16:9即可。

OwnAddress1:STM32的IIC設備的自身地址,掛載在IIC總線上的器件每一個都有自己唯一地址,作為主機也不例外。特別注意:這里地址的設置不要跟從機一樣即可。

AddressingMode地址的位數是使用7位還是10位,這要看從機了。對于AT24C02來說,直接使用7位。

DualAddressMode用來配置是否支持雙設備地址,沒有用到可以不配置。

OwnAddress2STM32的IIC設備的自身地址,是否有效取決于DualAddressMode成員的設置。

GeneralCallMode廣播呼叫模式,作為從機時使用,通常用不上。

NoStrethMode時鐘線延長,也是作為從機時使用的,通常用不上。




在IIC實驗例程中,編寫hwiic_init如下:


e13b6938-af85-11ec-82f6-dac502259ad0.png

這里是調用HAL_I2C_Init函數對IIC進行初始化,在IIC的初始化回調函數中就要使能I2C1時鐘以及對相關引腳進行初始化,特別注意GPIO口的模式(復用開漏輸出),這部分代碼比較簡單就不列出來了。




初始化完成后,使用HAL庫提供的IIC發送和接收函數,函數如下:

e147a9fa-af85-11ec-82f6-dac502259ad0.png

hi2cIIC的句柄結構體地址。

DevAddress從機的設備地址,這里并不是通訊地址。

MemAddress要寫入的地址。

MemAddSize地址的長度。

pData要寫入的數據的地址。

Size寫入數據的個數

Timeout函數執行的超時時間。




以往的AT24C02的寫操作函數和讀操作函數,函數體內一堆代碼,現在只是幾行代碼。

at24c02寫一字節函數代碼如下:

e1677b9a-af85-11ec-82f6-dac502259ad0.png

at24c02讀一字節函數代碼如下:

e1764a4e-af85-11ec-82f6-dac502259ad0.png

假如說直接用HAL_I2C_Mem_Write來編寫連續寫函數,就有頁寫限制,也就是最多8字節,當你寫入的數據大于8字節時,就會出現錯誤了。


所以編寫at24c02的連續寫函數最好就是調用at24c02_write_one_byte這個函數接口。


最終可以比對一下相同數據量的傳輸下,軟件模擬IIC和硬件IIC的速度對比。


硬件IIC的配置使用還是挺簡單的,速度上面還是比模擬IIC快,假如說是驅動OLED屏幕的話,可以試用一下硬件IIC提高一下刷新率,得到更好的顯示效果。

e18df0a4-af85-11ec-82f6-dac502259ad0.gif

END

e19b49a2-af85-11ec-82f6-dac502259ad0.gif

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6067

    文章

    44973

    瀏覽量

    649578
  • 嵌入式
    +關注

    關注

    5147

    文章

    19627

    瀏覽量

    316756
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    硬件調試:JLink 驅動配置與調試技巧

    摘要: 本文深入探討了 JLink 調試器在嵌入式系統硬件調試中的應用,詳細闡述了 JLink 驅動配置的方法以及硬件調試技巧。本文以國科安芯的AS32系列MCU芯片為例,通過分析 JLink
    的頭像 發表于 06-12 23:20 ?378次閱讀
    <b class='flag-5'>硬件</b>調試:JLink 驅動<b class='flag-5'>配置</b>與調試技巧

    STM32F407的兩個USB口能否分別實現讀卡器和讀U盤的功能以及硬件IIC讀寫AT24C02?

    需求如下: 1.OTS_FS(PA 11,PA12)實現TF卡的讀卡器功能, 2.OTS_HS(PB14,PB15)實現讀寫U盤功能 3.硬件IIC(PB8,PB9)讀寫AT24C02,硬件I
    發表于 03-11 06:23

    通過DLP上的IIC接口配置一些寄存器數據,板子掉電重新上電后配置的寄存器數據會保留在EEPROM里面,為什么?

    你好,在通過DLP芯片上的IIC接口,配置一些寄存器數據的時候,在板子掉電重新上電后,上次配置的寄存器數據會保留在EEPROM里面?請問這個是什么原因?
    發表于 02-28 07:39

    在APP FPGA 中通過IIC接口對DLPC910寄存器進行配置遇到的兩個問題求解

    在APP FPGA 中通過IIC接口對DLPC910寄存器進行配置,有兩個問題想要請教: 1、DLPC910被封裝成了FPGA,通過IIC改變它的寄存器的值,掉電后,該值會被保留還是又回到了初始
    發表于 02-25 06:47

    DLPC3479 IIC通訊異常的原因?

    電路是按照TI硬件方案自主設計的電路,但是沒有使用Cypress,直接用了一個FPGA通過IIC控制,上電后DLP3479的HOST_IRQ引腳正常拉低,但是遇到如下問題: 1. 按照說明發送
    發表于 02-18 07:04

    基于瑞薩RA0E1開發板的IIC OLED測試

    基于前面關于瑞薩e2 studio開發軟件的使用,以及工程測試基礎,本文進一步探索實現硬件IIC OLED的文字和圖片顯示。
    的頭像 發表于 02-13 13:36 ?764次閱讀
    基于瑞薩RA0E1開發板的<b class='flag-5'>IIC</b> OLED測試

    iic協議的硬件設計指南

    )和時鐘線(SCL)。SDA負責傳輸數據,而SCL用于同步數據傳輸。總線上的所有設備都通過這兩條線連接。 SDA(數據線) :雙向數據線,用于傳輸數據。 SCL(時鐘線) :雙向時鐘線,用于同步數據傳輸。 2. 引腳配置 在設計I2C硬件時,需要考慮以下引腳
    的頭像 發表于 02-05 11:34 ?1375次閱讀

    請問DS90UB903Q的IIC工作頻率必須為100KHz嗎?

    問題:DS90UB903Q的IIC工作頻率必須為100KHz嗎? 問題發生條件:芯片配置:DS90UB903Q的工作電壓為1.8V,VCCIO為3.3V;MODE=1,PDB=1;Rid=0ohm
    發表于 12-26 07:08

    PGA302在利用IIC進行PGA配置時遇到的兩個問題求解答

    在利用IIC進行PGA配置時,遇到了兩個問題: 1、date sheet的8.3.15.1說為了使得IIC接口能夠訪問內存而不是訪問測試區域,需要將micro interface control
    發表于 12-03 06:58

    LMK5B12204配置后無時鐘輸出怎么解決?

    使用LMK5B12204芯片按上面原理圖設計(OSC3 48M晶振沒有,實際使用的是74.25M),MCU配置硬件引腳及通過IIC寫入寄存器,配置后無法測量到時鐘輸出。 1.HW_
    發表于 11-13 06:17

    sii9134的硬件軟件如何配置

    sii9134 請問有大神接觸過這個轉HDMI的IC 嗎,我目前的問題是 sensor 輸出格式的YUV422, HS/VS獨立的,想了解下,硬件軟件如何配置,謝謝,
    發表于 10-28 06:18

    IIC信號線需要增加上拉電阻,是因為IIC的IO是什么

    IIC(Inter-Integrated Circuit,即集成電路總線)信號線需要增加上拉電阻,這主要是因為IIC的IO(輸入輸出)設計采用了開漏(Open-Drain)輸出方式。開漏輸出方式在
    的頭像 發表于 10-06 15:50 ?2028次閱讀

    請問TAS5760L怎么通過IIC進行音量控制,需要配置哪些寄存器?

    TAS5760L: 怎么通過IIC進行音量控制,需要配置哪些寄存器
    發表于 09-27 09:36

    CC13xx/CC26xx硬件配置和PCB設計注意事項

    電子發燒友網站提供《CC13xx/CC26xx硬件配置和PCB設計注意事項.pdf》資料免費下載
    發表于 09-03 11:12 ?0次下載
    CC13xx/CC26xx<b class='flag-5'>硬件</b><b class='flag-5'>配置</b>和PCB設計注意事項

    聚徽觸控-教學一體機怎么檢查硬件配置

    教學一體機檢查硬件配置的方法如下:
    的頭像 發表于 07-21 11:19 ?971次閱讀
    主站蜘蛛池模板: 国产裸露片段精华合集链接 | 777丰满影院 | 五月天婷婷免费观看视频在线 | 天天射狠狠干 | 国产片91人成在线观看 | 国内真实实拍伦视频在线观看 | 伊人久操| 亚洲一区视频 | 三级国产在线观看 | www.色偷偷 | 一个人看的www片免费高清视频 | 亚洲日本视频 | 天天做.天天爱.天天综合网 | 屁股趴过来欠打高h | 日日干夜夜草 | www.五月天| 亚洲视频一区二区三区 | 男人cao女人视频在线观看 | 亚洲午夜小视频 | 天天干天天射天天爽 | 欧美xxxx色视频在线观看免费 | 天天插日日干 | 中文字幕不卡免费高清视频 | 国产成年网站v片在线观看 国产成人91青青草原精品 | 农村妇女色又黄一级毛片卡 | 萌白酱一线天粉嫩喷水在线观看 | 在线免费影视 | 亚洲综合丁香婷婷六月香 | 免费黄色一级毛片 | 丁香婷婷综合五月六月 | 日本高清www| 亚洲高清在线视频 | 三级视频欧美 | 人人干人人舔 | 在线免费观看一级毛片 | 久久免费福利视频 | 男人j进入女人免费视频 | 黄色刺激网站 | 免费看污黄视频软件 | 国产成人影院在线观看 | 在线免费看高清视频大全 |