久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 779|回復: 0
打印 上一主題 下一主題
收起左側

技術分享-如何配置硬件IIC

[復制鏈接]
跳轉到指定樓層
樓主
ID:1012195 發表于 2022-3-31 17:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下文章摘自公眾號——開源電子網《技術干貨!網絡調試助手直接連接阿里云?》
更多技術文章,請掃下方二維碼關注








如何配置硬件IIC



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

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

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

         

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

      《嵌入式工程師必備技能—如何使用示波器查看IIC波形》
         https://mp.weixin.qq.com/s/lnSORSbXeNJe-QVwW0EVbg

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

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

         

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

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

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

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

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

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

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

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

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

         

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

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

         

        hi2c:IIC的句柄結構體地址。

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

        MemAddress:要寫入的地址。

        MemAddSize:地址的長度。

        pData:要寫入的數據的地址。

        Size:寫入數據的個數

        Timeout:函數執行的超時時間。

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

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

         

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

         

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

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

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

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品永久免费视频 | 日韩中文字幕2019 | 亚州综合在线 | 午夜小视频免费观看 | 午夜激情免费视频 | 欧美在线亚洲 | 日韩在线不卡 | 成人在线视频观看 | 91亚洲精品在线观看 | 久草www| 男女午夜激情视频 | 91久久久久久久 | 欧美激情精品久久久久久变态 | h视频在线看 | 久久久久国产一区二区三区 | 在线观看欧美一区 | 一级免费看 | 久久成人免费 | 久久久欧洲 | 国产小视频精品 | 精品欧美一区二区三区久久久 | 国产91av视频 | 久久精品免费看 | 成人欧美一区二区三区黑人孕妇 | 亚洲精品一二三 | 成人av色 | 国产分类视频 | 美女黄网站视频免费 | 国产精品成人久久久久 | 91在线看网站 | 久久最新 | 国产日韩欧美二区 | 日韩精品在线一区 | 99re视频这里只有精品 | 国产精品99久久久久久人 | 日韩一区二区av | 特黄一级 | 欧美一区二区在线播放 | 久久久久综合 | 99久久国产 | 国产在线1 |