国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32硬件IIC使用

這篇具有很好參考價值的文章主要介紹了STM32硬件IIC使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概述

雖然STM32的硬件IIC據(jù)說有設計缺陷,但是經(jīng)過我的實踐,至少STM32F103的硬件IIC是沒問題的。這里給出STM32的硬件IIC的使用以及編程思路。

1.STM32硬件IIC引腳

在這里給出STM32F103的硬件IIC引腳,方便查閱使用
stm32 硬件iic應用,STM32標準庫使用,stm32,單片機,嵌入式硬件

2.STM32硬件IIC使用流程

STM32的硬件IIC我認為是非常具有借鑒意義的,它使用了事件組的一個流程。以stm32為主設備,iic設備為從設備為例,主設備需要先向從設備發(fā)送開始信號,這個是iic協(xié)議所規(guī)定的,之后iic總線上的應答信號會轉化成EV5事件(一個標志量)。沒錯,STM32把一次完整的IIC數(shù)據(jù)傳輸依據(jù)IIC總線上的應答給拆分成了5個事件,每個事件代表一個傳輸事件完成。這是我第一次在freertos外的設備上見到事件組。
stm32 硬件iic應用,STM32標準庫使用,stm32,單片機,嵌入式硬件
如圖所示,在STM32上,硬件IIC事件組共有9個,在以STM32為主設備的情況下,僅有5個事件需要注意。其中EV5代表IIC模式設置完成,EV6代表IIC發(fā)送或接收模式設置,EV7代表IIC接收完成,EV8代表發(fā)送中,EV8_2代表發(fā)送完成。

具體代碼實現(xiàn)

在這里以STM32上的IIC1為例文章來源地址http://www.zghlxwxcb.cn/news/detail-839517.html

IIC初始化

1.IIC以及GPIO時鐘使能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//打開GPIO時鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);//打開IIC時鐘

2.GPIO設置

GPIO_InitTypeDef IIC_Gpio;//定義GPIO結構體
IIC_Gpio.GPIO_Pin |= GPIO_Pin_6 | GPIO_Pin_7;//設置IIC引腳
IIC_Gpio.GPIO_Mode = GPIO_Mode_AF_OD;//設置GPIO模式為復用推挽輸出
IIC_Gpio.GPIO_Speed = GPIO_Speed_50MHz;//設置GPIO速度為50MHz
GPIO_Init(GPIOB,&IIC_Gpio);//載入GPIO結構體

3.IIC設置

I2C_DeInit(I2C1);//初始化IIC1
I2C_InitTypeDef IIC_InitStruct;//定義IIC結構體
IIC_InitStruct.I2C_ClockSpeed = 400000;//設置IIC時鐘為400KHz,STM32硬件IIC最大到400KHz
IIC_InitStruct.I2C_Mode = I2C_Mode_I2C;//設置IIC模式為I2C
IIC_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2;//設置IIC占空比為2
IIC_InitStruct.I2C_OwnAddress1 = 0x21;//設置IIC本機地址,可以隨意設置,只要不與要通信的設備沖突即可
IIC_InitStruct.I2C_Ack = I2C_Ack_Enable;//設置IIC應答
IIC_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;//設置IIC應答地址長度
I2C_Init(I2C1,&IIC_InitStruct);//載入IIC結構體

4.IIC使能

I2C_Cmd(I2C1,ENABLE);

IIC發(fā)送

IIC發(fā)送單字節(jié)

I2C_GenerateSTART(I2C1,ENABLE);//生成開始信號
IIC_WaitEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT);//等待IIC模式設置開始即EV5事件
I2C_Send7bitAddress(I2C1,Address,I2C_Direction_Transmitter);//發(fā)送從設備地址+讀寫位
IIC_WaitEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED);//等待IIC模式設置完成即EV6事件
I2C_SendData(I2C1,data);//發(fā)送數(shù)據(jù)
IIC_WaitEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED);//等待數(shù)據(jù)發(fā)送完成即EV8_2事件
I2C_GenerateSTOP(I2C1,ENABLE);//生成停止信號

IIC發(fā)送多字節(jié)

void IIC_SendBuff(uint8_t* str,uint16_t len)
{
I2C_GenerateSTART(I2C1,ENABLE);//生成開始信號
IIC_WaitEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT);//等待IIC模式設置開始即EV5事件
I2C_Send7bitAddress(I2C1,Address,I2C_Direction_Transmitter);//發(fā)送從設備地址+讀寫位
IIC_WaitEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED);//等待IIC模式設置完成即EV6事件
while(len--)循環(huán)發(fā)送數(shù)據(jù)
{
    I2C_SendData(I2C1,*str);
    str++;
    IIC_WaitEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED);
}
I2C_GenerateSTOP(I2C1,ENABLE);//生成停止信號
}

到了這里,關于STM32硬件IIC使用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 一個簡單的HAL庫STM32使用DMA+硬件IIC驅動0.96寸OLED的方法

    一個簡單的HAL庫STM32使用DMA+硬件IIC驅動0.96寸OLED的方法

    自己在剛入坑嵌入式的時候,加入學??茀f(xié)的一道免試題是開發(fā)一個簡易的示波器,當時萌新不會做,中間又在準備比賽沒時間,最近幫女朋友做課設需要做一個簡易的交流電壓表,而且終于有空做一下自己感興趣的項目了,就想到了之前想做有沒得做的一個簡易示波器。

    2024年02月19日
    瀏覽(32)
  • STM32單片機初學4-IIC通信(軟件模擬)

    STM32單片機初學4-IIC通信(軟件模擬)

    IIC ( Inter-Integrated Circuit )又稱I2C(習慣讀“I方C”),是 IIC Bus簡稱,中文名為 集成電路總線 ,它是一種串行通信總線,使用多主從架構,由飛利浦公司在1980年代為了讓主板、嵌入式系統(tǒng)或手機用以連接低速周邊設備而發(fā)展。適用于IC間的短距離數(shù)據(jù)傳輸。 最初的IIC通信速

    2024年02月05日
    瀏覽(102)
  • 【STM32+HAL庫】---- 硬件IIC驅動0.96OLED

    【STM32+HAL庫】---- 硬件IIC驅動0.96OLED

    代碼借鑒學習于以下文章: STM32 使用硬件IIC驅動0.96寸4針I(yè)OLED顯示器(HAL庫) 略... 點擊查看代碼 首先在 main.c 中引入頭文件 隨即根據(jù)要求在 main函數(shù) 中添加對應功能函數(shù)即可 【 注意 】使用時應將編譯器編碼選項選擇為 GBK系列 ,否則編譯報錯,尤其注意通過keil修改后,再

    2024年02月19日
    瀏覽(27)
  • STM32硬件IIC卡死問題和DMA發(fā)送數(shù)據(jù)異常問題

    問題1描述: 一直聽說STM32的硬件IIC有問題,我平時做項目一直沒有遇到過,這次做項目發(fā)現(xiàn)硬件IIC居然會自己卡死,現(xiàn)象就是IIC發(fā)不出數(shù)據(jù),用邏輯分析儀捕捉不到任何電平,必須要重啟單片機才能正常,接下來說一下我的硬件環(huán)境:STM32作為主機,IIC總線上掛載這AT24C02和一

    2024年02月03日
    瀏覽(21)
  • STM32單片機初學5-IIC通信驅動OLED屏幕

    STM32單片機初學5-IIC通信驅動OLED屏幕

    在我上篇文章(STM32-軟件模擬IIC通信)講解了軟件模擬IIC通信。這篇文章詳將細講解利用軟件模擬IIC來控制0.96寸的OLED屏幕(如下圖),使其顯示字符串。本文將不再對IIC通信原理做詳細講解,所以對IIC通信原理不熟悉的話可以參考我上篇文章(點擊上面的鏈接直接跳轉)。

    2023年04月10日
    瀏覽(90)
  • STM32 硬件IIC 控制OLED I2C卡死問題

    STM32 硬件IIC 控制OLED I2C卡死問題

    #更新通知:2023-09-06 STM32L151 固件庫 使用I2C 太難了,又宕機了,建議不要在固件庫版本上嘗試硬件IIC 了,一般人真用不了,直接使用軟件模擬的,或者不要使用固件庫了,用HAL 庫吧,據(jù)說HAL 庫沒這么多問題,不死心的我還是死心了,等有空再研究吧 3.1 I2C模式,我這里選的

    2024年02月09日
    瀏覽(33)
  • STM32模擬IIC與IIC四種實現(xiàn)數(shù)字光強采集模塊GY30(標準庫與HAL庫)

    STM32模擬IIC與IIC四種實現(xiàn)數(shù)字光強采集模塊GY30(標準庫與HAL庫)

    目錄 代碼實現(xiàn)是的IIC通信,數(shù)據(jù)采集后在串口顯示,方便大家實現(xiàn)二次開發(fā) 原件選擇 GY-30 數(shù)字光強度介紹 BH1750芯片參數(shù) 引腳說明 ?BH1750指令集 接線表設計 通過四種方式實現(xiàn)GY-30數(shù)據(jù)采集 1.標準庫模擬IIC實現(xiàn)GY-30采集并串口1顯示 ?2.標準庫IIC實現(xiàn)GY-30采集并串口1顯示 3.HAL庫

    2023年04月26日
    瀏覽(26)
  • STM32Cubemxhal庫硬件IIC驅動SHT40溫濕度傳感器

    STM32Cubemxhal庫硬件IIC驅動SHT40溫濕度傳感器

    STM32cubemx配置硬件IIC如圖所示 ?SHT40的驅動代碼 注意:在讀sht40的寄存器之后一定要加10幾個ms的延時

    2024年02月12日
    瀏覽(36)
  • 【STM32】 硬件IIC 驅動SSD1306(0.96 OLED模塊) -- 1/4 庫函數(shù) 學習

    【STM32】 硬件IIC 驅動SSD1306(0.96 OLED模塊) -- 1/4 庫函數(shù) 學習

    經(jīng)過了對于STM32的學習,但是大多數(shù)時候都還是以移植別人的歷程然后修修改改為主。為了更好的鞏固自己的學習能力。 所以此篇文章將會以記錄我個人學習 硬件IIC 為案例,學習驅動IIC總線設備的能力。 1.《STM32F10x-中文參考手冊》 2.《SSD1306芯片手冊》 《STM32F10x-中文參考手

    2024年02月01日
    瀏覽(25)
  • STM32F103硬件IIC控制4針0.96寸OLED顯示屏

    STM32F103硬件IIC控制4針0.96寸OLED顯示屏

    OLED使用的0.96寸四針屏幕,以下直接看實際操作。 使用PCtoLCD2002軟件提取OLED字模。 注意紅色方框的選項內容,不要選錯了,選錯會導致燒錄程序后無法顯示。 此為硬件IIC,如果使用過我的模擬IIC控制程序可直接看 void OLED_Write_Command(unsigned char IIC_Command); void OLED_Write_Data(unsig

    2024年02月02日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包