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

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

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

3天內不再提示

【南京中科微CSM32RV20開發板試用體驗】模擬IIC和硬件IIC的使用點亮0.96OLED屏幕+溫濕度讀取顯示

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-30 10:59 ? 次閱讀
本文來源電子發燒友社區,作者:少年阿炳, 帖子地址:https://bbs.elecfans.com/jishu_2246563_1_1.html

本次內容包括
1.使用模擬IIC點亮OLED屏幕,并讀取DHT11的溫濕度顯示在OLED屏上
2.硬件IIC非中斷的使用

首先是模擬IIC的使用
模擬IIC就是使用單片機控制IO口輸出高低電平模擬實際IIC開始,結束,數據發送等的相應規則達到點亮OLED的目的。所以最重要的就是如何配置IO口已經輸出高低電平。
將需要的IO口配置成輸出模式


  1. GPIO_PULL_Init(GPIOA,PIN7,GPIO_PULLUP);
  2. GPIO_MODE_Init(GPIOA,PIN7,GPIO_MODE_OUTPUT); //SDAGPIO 模式
  3. GPIO_MODE_Init(GPIOA,PIN5,GPIO_MODE_OUTPUT); // SCL GPIO 模式
  4. GPIO_PULL_Init(GPIOA,PIN5,GPIO_PULLUP);
復制代碼

使用GPIO_Write()函數輸出高/低電平


  1. //#define OLED_SCLK_Set() GPIO_Write(GPIOA,PIN5,GPIO_SET)//PA5(SCL)輸出高
  2. //#define OLED_SCLK_Clr() GPIO_Write(GPIOA,PIN5,GPIO_RESET) //PA5(SCL)輸出低
  3. //#define OLED_SDIN_Set() GPIO_Write(GPIOA,PIN7,GPIO_SET) //PA7(SDA)輸出高
  4. //#define OLED_SDIN_Clr() GPIO_Write(GPIOA,PIN7,GPIO_RESET) //PA7(SDA)輸出高
  5. //#define OLED_READ_SDIN() GPIO_Read(GPIOA, PIN7) //讀取PA7(SDA)電平
復制代碼


之后就是模擬開始信號,結束信號,響應信號,數據發送,命令發送等。我這里是將現成可用的STM32代碼移植過來,然后做了對應的修改。詳細可以查看附件1.
特別說明:我這里的響應信號也是模擬的,并不是真讀取OLED的返回。

DHT11溫濕度的讀取
DHT11的數據是通過單總線實現的。數據讀取信號以及返回的溫濕度值都是通過一根數據線完成,因此需要對同一個IO口先進行輸出配置,然后進行輸入配置。


  1. // DTH11---> PB6
  2. // 輸出模式
  3. void DHT11_OUT(void)
  4. {
  5. GPIO_MODE_Init(GPIOB,PIN6,GPIO_MODE_OUTPUT); //GPIO 模式
  6. GPIO_PULL_Init(GPIOB,PIN6,GPIO_PULLUP); //GPIO 上拉//PB6
  7. }
  8. // 輸入模式
  9. void DHT11_IN(void)
  10. {
  11. GPIO_MODE_Init(GPIOB,PIN6,GPIO_MODE_INPUT); //GPIO 模式
  12. GPIO_PULL_Init(GPIOB,PIN6,GPIO_PULLUP); //GPIO
  13. }
復制代碼



硬件IIC使用的注意事項
在用模擬IIC點亮OLED后,我尋思著使用以下CSM32自帶的硬件IIC點亮OLED,
使用的是非中斷模式,啟動硬件IIC使用的I2C_Init_case1()函數。


  1. void I2C_Init_case1(void)//非中斷模式
  2. {
  3. GPIO_MODE_Init(GPIOA, PIN7,GPIO_MODE_AF);
  4. GPIO_MODE_Init(GPIOA, PIN8,GPIO_MODE_AF);
  5. GPIO_AF_Init(GPIOA,PIN7,GPIO_AF0); //SCL
  6. GPIO_AF_Init(GPIOA,PIN8,GPIO_AF0); //SDA
  7. GPIO_PULL_Init(GPIOA, PIN7,GPIO_PULLUP);
  8. GPIO_PULL_Init(GPIOA, PIN8,GPIO_PULLUP);
  9. I2C->CTRL =1<<12? ? //時鐘分頻:0-不分頻,1-2分頻
  10. |0<<9? ???//error中斷:0-關閉,1-開啟
  11. |0<<8? ???//ready中斷:0-關閉,1-開啟
  12. |0<<7? ???//時鐘頻率:0-100K,1-400K
  13. |0x3C; //從機地址
  14. }
復制代碼


特別說明一下從機地址的配置形式,因為此線使用模式IIC時從機地址都是0x78,所以到了硬件IIC,我想當然配置成了0x78,這樣是錯誤的。
從機地址的bit0位需要根據READ或者WRITE分別配置成1/0
一開始我將地址配置成0x78后,通過邏輯分析儀讀取到的SDA變成了0xF0(11110000),也就是0x78(01111000)左移了一位,也就是說CSM32的硬件IIC將我的地址左移了一位,然后在bit0插入了一位0。所以在初始化配置時,需要將從機地址配置成0x3C,這樣才能確保從機地址正確。
之后通過I2C_Write函數寫數據。


  1. void I2C_Write(uint8_t addr,uint8_t data)//適用于非中斷模式
  2. {
  3. uint32_t i2c_rw_en = 0x0<<16; //i2c操作:0-寫操作,1-讀操作
  4. uint32_t i2c_addr = addr<<8;??//存儲單元地址
  5. uint32_t i2c_rwdata = data; //數據
  6. I2C->STATUS1 = 0; //清除狀態標志
  7. I2C->DATA = i2c_addr|i2c_rw_en|i2c_rwdata;//寫數據
  8. while(!(I2C->STATUS1&0x01));
  9. I2C->STATUS1 = 0;
  10. }
復制代碼

I2C_Write(uint8_t addr,uint8_t data)

addr參數,實際代表的是數據命令,對應的就是模擬IIC發送時,中間的那位數據,
0x00,寫入命令。0x40,寫入數據。


  1. void OLED_Write_IIC_Command(u8 IIC_Command)
  2. {
  3. I2C_Write(0x00,IIC_Command);
  4. }
  5. /**********************************************
  6. // IIC Write Data
  7. **********************************************/
  8. void OLED_Write_IIC_Data(u8 IIC_Data)
  9. {
  10. I2C_Write(0x40,IIC_Data);
  11. }
復制代碼

完成以上修改后,就能將之前模擬IIC修改為硬件IIC。

下面圖片中邏輯分析儀的時序圖供大家參考,截圖框內是錯誤配置的從機地址。
因為我使用的邏輯分析儀就20幾塊,顯示的從機地址好像不正確,但是波形還是準確的。




3.jpg

2.jpg

40c93b9a48e41c95584ee2fb4f59c3435b492d03.jpg

硬件IIC.rar(源代碼下載

模擬IIC+DHT11.rar(源代碼下載)


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

    關注

    0

    文章

    60

    瀏覽量

    784
  • CSM32RV20
    +關注

    關注

    0

    文章

    40

    瀏覽量

    230
收藏 人收藏

    評論

    相關推薦

    【正點原子STM32H7R3開發套件試用體驗】DS18B20、DHT11溫濕度采集

    【正點原子STM32H7R3開發套件試用體驗】DS18B20、DHT11溫濕度采集 本文主要分為兩部分,分別介紹了使用正點原子STM32H7R3開發
    發表于 01-01 11:16

    【敏矽ME32G070開發板免費體驗】開箱+點燈+點亮OLED

    ME32G070 支持硬件 I2C,這里偷個懶,不想使用繁瑣的跳線,直接在開發板上隨意插入 OLED 顯示屏的引腳,如下: 直接插上 OLED
    發表于 12-19 00:25

    基于CW32模塊的SHT30溫濕度傳感器設計

    我們的目標是將例程移植至CW32F030C8T6開發板上【測量溫濕度的功能】。首先要獲取資料,查看數據手冊應如何實現讀取數據,再移植至我們的工程。
    的頭像 發表于 11-12 11:14 ?322次閱讀
    基于CW32模塊的SHT30<b class='flag-5'>溫濕度</b>傳感器設計

    【RA-Eco-RA2E1-48PIN-V1.0開發板試用IIC 通信的 OLED 顯示

    【RA-Eco-RA2E1-48PIN-V1.0開發板試用IIC 通信的 OLED 顯示 簡介 IIC
    發表于 11-07 02:30

    關于Air780E:使用文件系統存儲溫濕度數據怎么操作?

    ?伙伴們,今天我們來學習合宙低功耗4G模組Air780E快速入門之使用文件系統存儲溫濕度數據。 一、 編寫腳本 1.1 硬件及資料準備 780E開發板 LuatOS-Air780E-文件系統
    的頭像 發表于 10-31 07:26 ?172次閱讀
    關于Air780E:使用文件系統存儲<b class='flag-5'>溫濕度</b>數據怎么操作?

    【RA-Eco-RA0E1-32PIN-V1.0開發板試用】sht30溫濕度傳感器

    這一章節,繼續探究RA0E1的硬件iic外設。來驅動SHT30溫濕度傳感器,該款溫濕度傳感器具有高精度穩定性,可以精確到0.125度的分辨率,特別適合用來做環境的監測。
    發表于 10-14 23:40

    【BearPi-Pico H3863星閃開發板體驗連載】GPIO 控制與 IIC OLED 顯示

    杜邦線連接開發板OLED 顯示屏,接線方式如下 TXD -----> SDA ? RXD -----> SCL ? 3V3 ------> VCC ? GND -----> GND
    發表于 10-03 12:47

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環境溫濕度數據及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環境溫濕度數據及 OLED顯示
    的頭像 發表于 08-13 18:04 ?1238次閱讀
    Arduino Nano 和 NodeMCU ESP8266 <b class='flag-5'>讀取</b> DHT11 環境<b class='flag-5'>溫濕度</b>數據及 <b class='flag-5'>OLED</b><b class='flag-5'>顯示</b>

    求助,請問ESP32-S2-DevKitM-1開發板IIC引腳是哪些?

    購買的ESP32-S2-DevKitM-1,說是有兩路IIC,可是到處找的資料,都沒說是哪些引腳,使用Arduino里的Adafruit_SSD1306或者U8g2庫對0.96OLED
    發表于 07-01 07:03

    如何用stm32實現將IIC溫濕度傳感線采集到的數據轉發到485的設備。

    各位前輩,小弟剛畢業。公司要求實現這么一個項目,把iic協議的sht30溫濕度傳感器線采集到的數據轉在485通訊的顯示屏上打印出來,小弟毫無頭緒,網上資料不多,望指點。
    發表于 06-21 09:40

    項目分享|基于ELF 1開發板的MQTT遠程溫濕度監測系統

    今天非常榮幸向各位小伙伴詳細展示一個由共創社成員完成的MQTT遠程溫濕度監控系統項目。該項目借助ELF1開發板作為核心技術支撐,成功實現了對各類環境空間中溫濕度數據的實時、遠程、穩定監測。該系統不僅
    的頭像 發表于 04-26 09:54 ?525次閱讀
    項目分享|基于ELF 1<b class='flag-5'>開發板</b>的MQTT遠程<b class='flag-5'>溫濕度</b>監測系統

    基于51單片機的SHT11溫濕度監測系統,LCD1602顯示,上下限按鍵設置

    LCD1602顯示模塊實時顯示溫濕度數據,同時可以通過按鍵模塊對溫濕度報警上、下限值進行設定。 當SHT11讀取
    發表于 03-26 17:44

    stm32f407vet6驅動0.96oled顯示屏無法顯示怎么解決?

    stm32f407vet6驅動0.96oled——iic協議代碼無報錯時鐘正確顯示屏無法顯示
    發表于 03-14 06:49

    【原創】DHT11傳感器溫濕度監測系統畢設,論文、代碼、原理圖和仿真介紹

    使用。但從成本考慮,DHT11價格便宜,其應用更為廣泛。 系統概述 本文設計了一種基于51單片機和DHT11傳感器的溫濕度監測系統,能夠實現對當前環境溫濕度數據的采集、處理、顯示和報警等功能。 系統
    發表于 03-13 00:53

    【外設移植】0.96IIC單色屏+Ai-M61開發板

    本作品由安信可社區用戶 沈夜 制作 ? 01外設介紹 先來介紹下0.96OLED顯示屏(驅動芯片:SSD1306 / SSD1315) [color=rgba(0, 0, 0, 0.87
    的頭像 發表于 02-26 09:54 ?2614次閱讀
    【外設移植】<b class='flag-5'>0.96</b>寸<b class='flag-5'>IIC</b>單色屏+Ai-M61<b class='flag-5'>開發板</b>
    主站蜘蛛池模板: 成人ww| 色老头在线官方网站| 欧美人另类zooz| 亚洲伊人电影| 朋友夫妇和交换性bd高清| 亚洲涩色| 国产香蕉免费精品视频| 午夜精品久视频在线观看| 国产va免费精品| 美女视频黄免费| 欧美三级欧美一级| 三级网址在线| 三级电影在线观看视频| 欧美黄色片在线观看| 国模精品一区二区| 久久奈| 黄色一级视频网| 黄色美女网址| 国产一级特黄特色aa毛片| 激情综合五月婷婷| 91成人午夜性a一级毛片| 成人久久久| 天天色天天| 日韩第十页| 欧美午夜网| 久久天天躁狠狠躁夜夜| 欧美7777kkkk免费看258| www.在线视频| 五月婷婷俺也去开心| 视频在线观看一区二区三区| 日本不卡在线视频| 精品二区| 一卡二卡三卡四卡无卡在线| 99国产精品久久久久久久成人热| 久久9热| 这里只有精品在线| 中文字幕天堂| 亚洲线精品一区二区三区| 俄罗斯久久| 香焦视频在线观看黄| 天堂视频网|