#endif /* _BOARD_I2C_H_ */
三、API調(diào)用
需包含頭文件 board_i2c.h
IIC_Init
功能 | I2C驅(qū)動初始化,采用模擬IO的方式實現(xiàn) |
---|---|
函數(shù)定義 | void IIC_Init(void) |
參數(shù) | 無 |
返回 | 無 |
IIC_Start
功能 | CPU發(fā)起I2C總線啟動信號 |
---|---|
函數(shù)定義 | void IIC_Start(void) |
參數(shù) | 無 |
返回 | 無 |
IIC_Stop
功能 | CPU發(fā)起I2C總線停止信號 |
---|---|
函數(shù)定義 | void IIC_Stop(void) |
參數(shù) | 無 |
返回 | 無 |
IIC_SendByte
功能 | CPU向I2C總線設(shè)備發(fā)送8bit數(shù)據(jù) |
---|---|
函數(shù)定義 | void IIC_SendByte(uint8_t ucByte) |
參數(shù) | ucByte:等待發(fā)送的字節(jié) |
返回 | 無 |
IIC_ReadByte
功能 | CPU從I2C總線設(shè)備讀取8bit數(shù)據(jù) |
---|---|
函數(shù)定義 | uint8_t IIC_ReadByte(void) |
參數(shù) | 無 |
返回 | 讀到的數(shù)據(jù) |
IIC_WaitAck
功能 | CPU產(chǎn)生一個時鐘,并讀取器件的ACK應(yīng)答信號 |
---|---|
函數(shù)定義 | uint8_t IIC_WaitAck(void) |
參數(shù) | 無 |
返回 | 0表示正確應(yīng)答,1表示無器件響應(yīng) |
IIC_Ack
功能 | CPU產(chǎn)生一個ACK信號 |
---|---|
函數(shù)定義 | void IIC_Ack(void) |
參數(shù) | 無 |
返回 | 無 |
IIC_NAck
功能 | CPU產(chǎn)生1個NACK信號 |
---|---|
函數(shù)定義 | void IIC_NAck(void) |
參數(shù) | 無 |
返回 | 無 |
IIC_CheckDevice
功能 | 檢測I2C總線設(shè)備,CPU向發(fā)送設(shè)備地址,然后讀取設(shè)備應(yīng)答來判斷該設(shè)備是否存在 |
---|---|
函數(shù)定義 | uint8_t IIC_CheckDevice(uint8_t address) |
參數(shù) | address:設(shè)備的I2C總線地址+讀寫控制bit(0 = w, 1 = r) |
返回 | 0 - 表示正確, 1 - 表示未探測到 |
四、使用例子
1)添加頭文件
#include 'board_i2c.h'
2)添加初始化代碼
int main(void)
{
BaseType_t xReturn = pdPASS; // 定義一個創(chuàng)建信息返回值,默認為pdPASS
/*-------------------------- 外設(shè)驅(qū)初始化 ---------------------------*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // STM32中斷優(yōu)先級分組為4,即4bit都用來表示搶占優(yōu)先級,范圍為:0~15優(yōu)先級分組只需要分組一次即可,以后如果有其他的任務(wù)需要用到中斷,都統(tǒng)一用這個優(yōu)先級分組,千萬不要再分組,切忌
Board_LedInit(); // LED燈驅(qū)動初始化
Board_KeyInit(); // 按鍵驅(qū)動初始化
USART_Config(); // 串口驅(qū)動初始化
printf('-------------- I2C Init--------------rn');
// 這里寫入設(shè)備的I2C總線地址
uint8_t i2cDevice = IIC_CheckDevice(TEA5767_ADDR_W); // 初始化I2C,并檢測是否有設(shè)備
if(!i2cDevice)
{
printf('---- I2C OK ----rn');
}
else
{
printf('---- I2C ERROR ----rn');
}
/*-------------------------- 任務(wù)創(chuàng)建 ---------------------------*/
xReturn = xTaskCreate((TaskFunction_t)appTaskCreate, // 任務(wù)入口函數(shù)
(const char* )'appTaskCreate', // 任務(wù)名字
(uint16_t )512, // 任務(wù)棧大小
(void* )NULL, // 任務(wù)入口函數(shù)參數(shù)
(UBaseType_t )1, // 任務(wù)的優(yōu)先級
(TaskHandle_t* )&s_appTaskCreateHandle); // 任務(wù)控制塊指針
/*-------------------------- 開啟調(diào)度 ---------------------------*/
if(pdPASS == xReturn)
{
vTaskStartScheduler();
}
else
{
return -1;
}
while(1)
{
/* 正常不會執(zhí)行到這里 */
};
}
上一篇:STM32F103學習筆記(2)——收音機模塊TEA5767使用
下一篇:OSW-MMOS直驅(qū)方向盤DIY過程記錄2-PWM+DIR模式
推薦閱讀最新更新時間:2025-06-24 15:37




設(shè)計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 基于霍爾傳感器的自行車測速
- LT3470AIDDB 12V 降壓轉(zhuǎn)換器的典型應(yīng)用電路
- OP295GSZ 4.5V、低壓差運算放大器基準的典型應(yīng)用
- STEVAL-ISA098V1,使用 L7985A 的演示板,HSOP8 封裝中的 2 A 降壓開關(guān)
- NCP2811 NOCAP高級立體聲耳機放大器典型應(yīng)用電路
- STM3210C-EVAL,基于 STM32F107VCT STM32 ARM Cortex-M3(256KB 閃存)連接線 MCU 的評估板
- 使用 ROHM Semiconductor 的 BD45321 的參考設(shè)計
- EVAL40WFLYP7950VTOBO1、40W 適配器評估板在無緩沖器反激中使用 950V CoolMOS P7 和 ICE2QS03G QR 反激控制器以提高效率
- L296P大電流開關(guān)穩(wěn)壓器典型應(yīng)用電路
- 用于便攜式應(yīng)用的 RT9524 線性單節(jié)鋰離子電池充電器 IC 的典型應(yīng)用電路
- "智能汽車芯片大戰(zhàn)升級:高通最新方案為何獲中國車企追捧?
- 電壓精度0.5% @25°C!思瑞浦發(fā)布全新車規(guī)并聯(lián)基準芯片TPR43xQ系列產(chǎn)品
- AI技術(shù)在方便面生產(chǎn)質(zhì)量監(jiān)控中的應(yīng)用
- 潤石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開啟智能測試新時代(下)
- 軟件定義汽車電源管理設(shè)計:NXP的PMIC選型攻略解析
- 深度測評時空壺X1同聲傳譯器:全球最先進AI同傳設(shè)備的非凡實力
- 作為領(lǐng)先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴容+國產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動問題解析
- 關(guān)于2440的MDK平臺下移植ucOS2,遇到的問題,及解決辦法
- keil5中找不到lpc2368的解決方法
- stm32 keil中出現(xiàn)use of undeclared identifier' '的原因
- Keil MDK5項目建立步驟及可能出現(xiàn)的錯誤解決方法
- keil MDK編譯器警告和錯誤詳解
- 集中式光伏逆變器特點
- 2018全球EMS代工廠TOP50
- 廣東埃華路研發(fā)并量產(chǎn)機器人柔性拋光系統(tǒng)
- 掃地機器人產(chǎn)品層出不窮 懶人經(jīng)濟開始崛起
- 機器人產(chǎn)業(yè)正在中國蓬勃發(fā)展 中國機器人初創(chuàng)企業(yè)開始崛起