日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年08月07日(星期四)

2019年08月07日 | stm32 hal 模擬i2c

發(fā)布者:墮落的貓 來源: eefocus關鍵字:stm32  hal  模擬i2c 手機看文章 掃描二維碼
隨時隨地手機看文章

管腳配置(我是用的是PA9和PA10):


//i2c.h

#include "stm32f0xx_hal.h"

 

#define GPIO_PORT_I2C GPIOA      // GPIO端口 

#define I2C_SCL_PIN SCL_Pin // 連接到SCL時鐘線的GPIO 

#define I2C_SDA_PIN SDA_Pin // 連接到SDA數據線的GPIO 

 

 

/* 定義讀寫SCL和SDA的宏 */

#define I2C_SCL_1()  GPIO_PORT_I2C->BSRR = I2C_SCL_PIN // SCL = 1 

#define I2C_SCL_0()  GPIO_PORT_I2C->BSRR = (uint32_t)I2C_SCL_PIN << 16U  // SCL = 0 

 

#define I2C_SDA_1()  GPIO_PORT_I2C->BSRR = I2C_SDA_PIN    // SDA = 1 

#define I2C_SDA_0()  GPIO_PORT_I2C->BSRR = (uint32_t)I2C_SDA_PIN << 16U  // SDA = 0 

 

#define I2C_SDA_READ()  (GPIO_PORT_I2C->IDR & I2C_SDA_PIN) // 讀SDA口線狀態(tài) 

#define I2C_SCL_READ()  (GPIO_PORT_I2C->IDR & I2C_SCL_PIN) // 讀SCL口線狀態(tài) 

 

 

void i2c_Start(void);

//停止信號

void i2c_Stop(void);

//發(fā)送一個字節(jié)

void i2c_SendByte(uint8_t _ucByte);

//讀取一個字節(jié)

uint8_t i2c_ReadByte(void);

//等待應答信號

uint8_t i2c_WaitAck(void);

//應答信號

void i2c_Ack(void);

//檢查設備

uint8_t i2c_CheckDevice(uint8_t _Address);

//發(fā)送數據

void  Device_WriteData(uint8_t DeciveAddr,uint8_t *Data,int size);

//i2c.c

#include "i2c.h"

#include "main.h"

 

static void i2c_Delay(void)

{

uint8_t i;

for (i = 0; i < 40; i++);

}

//開始信號

void i2c_Start(void)

{

// 當SCL高電平時,SDA出現一個下跳沿表示I2C總線啟動信號 

I2C_SDA_1();

I2C_SCL_1();

i2c_Delay();

I2C_SDA_0();

i2c_Delay();

I2C_SCL_0();

i2c_Delay();

}

 

//停止信號

void i2c_Stop(void)

{

// 當SCL高電平時,SDA出現一個上跳沿表示I2C總線停止信號 

I2C_SDA_0();

I2C_SCL_1();

i2c_Delay();

I2C_SDA_1();

i2c_Delay();

}

//發(fā)送一個字節(jié)

void i2c_SendByte(uint8_t _ucByte)

{

uint8_t i;

// 先發(fā)送字節(jié)的高位bit7 

for (i = 0; i < 8; i++)

{

if (_ucByte & 0x80)

{

I2C_SDA_1();

}

else

{

I2C_SDA_0();

}

i2c_Delay();

I2C_SCL_1();

i2c_Delay();

I2C_SCL_0();

if (i == 7)

{

I2C_SDA_1(); // 釋放總線

}

_ucByte <<= 1; // 左移一個bit 

i2c_Delay();

}

}

//讀取一個字節(jié)

uint8_t i2c_ReadByte(void)

{

uint8_t i;

uint8_t value;

/* 讀到第1個bit為數據的bit7 */

value = 0;

for (i = 0; i < 8; i++)

{

value <<= 1;

I2C_SCL_1();

i2c_Delay();

if (I2C_SDA_READ())

{

value++;

}

I2C_SCL_0();

i2c_Delay();

}

return value;

}

 

//等待應答信號

uint8_t i2c_WaitAck(void)

{

uint8_t re;

 

I2C_SDA_1(); /* CPU釋放SDA總線 */

// i2c_Delay();

I2C_SCL_1(); /* CPU驅動SCL = 1, 此時器件會返回ACK應答 */

i2c_Delay();

 

if (I2C_SDA_READ()) /* CPU讀取SDA口線狀態(tài) */

{

re = 1;

}

else

{

re = 0;

}

 

I2C_SCL_0();

i2c_Delay();

return re;

}

//應答信號

void i2c_Ack(void)

{

I2C_SDA_0(); /* CPU驅動SDA = 0 */

i2c_Delay();

I2C_SCL_1(); /* CPU產生1個時鐘 */

i2c_Delay();

I2C_SCL_0();

i2c_Delay();

I2C_SDA_1(); /* CPU釋放SDA總線 */

}

 

 

uint8_t i2c_CheckDevice(uint8_t _Address)

{

uint8_t ucAck;

 

if (I2C_SDA_READ() && I2C_SCL_READ())

{

i2c_Start(); /* 發(fā)送啟動信號 */

 

/* 發(fā)送設備地址+讀寫控制bit(0 = w, 1 = r) bit7 先傳 */

i2c_SendByte(_Address | 0);

ucAck = i2c_WaitAck(); /* 檢測設備的ACK應答 */

 

i2c_Stop(); /* 發(fā)送停止信號 */

 

return ucAck;

}

return 1; /* I2C總線異常 */

}

 

 

void  Device_WriteData(uint8_t DeciveAddr,uint8_t *Data,int size)

{

    int count=size;

uint8_t *pData=Data;

//起始信號

    i2c_Start();    

    //發(fā)送器件地址                         

    i2c_SendByte(DeciveAddr);       

    //等待應答

    i2c_WaitAck();                          

    while(count--)

{

//發(fā)送數據

i2c_SendByte(*pData++);                     

//等待應答

i2c_WaitAck();   

}  

                       

    //結束信號

    i2c_Stop();     

}


關鍵字:stm32  hal  模擬i2c 引用地址:stm32 hal 模擬i2c

上一篇:STM32F103,HAL實現軟件I2C,與硬件I2C
下一篇:STM32--HAL庫IIC

推薦閱讀

? ? ?8月6日上午消息,美國家庭音響品牌Sonos的首席產品官尼克·米林頓(Nick Millington)在接受外媒采訪時,談到了該公司上市后的產品戰(zhàn)略以及老產品對AirPlay 2的支持。談到產品發(fā)布的問題時,米林頓表示Sonos目前關注的是產品的研發(fā)和發(fā)布周期。過去,Sonos經過幾年的時間才會推出新的硬件產品,但是最近這家公司一下推出了智能音箱Sonos One...
尼日利亞副總統(tǒng)Yemi Osinbajo教授(左)在8月2日的試運行儀式上。圖片:Osinbajo教授的辦公室   尼日利亞聯(lián)邦大學對首個兆瓦級太陽能混合發(fā)電項目的投產表示歡迎,該項目將減少對化石燃料和電網的依賴,預計將在該國所有此類機構推廣。   根據尼日利亞聯(lián)邦政府的“振興教育計劃”,37所大學和7所校醫(yī)院正在安裝太陽能發(fā)電設施。副總統(tǒng)Yemi Osin...
全球電子元器件與開發(fā)服務分銷商e絡盟宣布新增泰克全新TBS1000C系列數字存儲示波器,進一步擴充其市場領先的測試與測量產品線。該系列示波器專為滿足當前教育機構、嵌入式設計工程師和創(chuàng)客的需求而設計,其性能與廣受歡迎的TBS1000B相比更具優(yōu)越性。 TBS1000C系列以實惠的價格提供領先的入門級示波器性能,其設計質量也完全符合工程師們對泰克的期望。該系...

史海拾趣

問答坊 | AI 解惑

嵌入式學習資源--幫我頂起

ARM體系架構與編程視頻下載址地:http://www.itcast.net/course/detail/2589 Linux從入門到精通視頻教程主要對Linux系統(tǒng)的概念、使用、原理和驅動開發(fā)等方面的內容進行講解。下載地址:http://student.csdn.net/space.php?do=course&cid=2590&ac=d ...…

查看全部問答∨

wince有OnVScroll消息嗎

環(huán)境:wince 開發(fā)環(huán)境:vs 2005 項目為vc下的智能設備應用程序 我繼承了combobox類,寫了自己的新類CMyComboBox.我添加了OnVScroll消息,可是設置斷點根本沒有響應啊? 我是想將VScroll的寬度弄寬一些,這樣便于用戶拖拽的時候選取 void CMyCom ...…

查看全部問答∨

wince 程序串口通信問題 請幫忙!!

我在WINCE開發(fā)一個串口 通信程序. 其主要代碼(讀串口的代碼) 如下:(在單獨一個線程進行讀操作)         //清空串口         PurgeComm(m_hComm, PURGE_RXCLEAR|PURGE_TXCLEAR);       ...…

查看全部問答∨

WINCE的一個疑問!!!!1

大家好,我定制的的WINCE系統(tǒng)。我發(fā)現我復制文件到設備上的WINDOWS目錄.復制到WINDOWS目錄的文件,在機器重啟后也沒有丟失,是什么原因呀?我的機器有WINDOWS和BINFS,NANDFLASH這樣的文件夾!據說WINDOWS下面是不能保存文件的呀?奇怪!1…

查看全部問答∨

stm32的通用定時器輸出比較

這幾天一直在看stm32 的通用定時器,  對定時器的輸出比較很是迷惑,主要有以下幾點: 1、輸出模式有 Timing、Active、InActive、Toggle 等幾種模式, 這幾種模式有什么區(qū)別? 或者說各有什么用途? 2、 根據TIMx_CCMR 中的OC1M ...…

查看全部問答∨

2407 PWM端口的配置問題請教.

打個比方: PWM1(56腳)與PWM2(54腳)是一對PWM口,可以配置為一對極性相同或相反的PWM輸出. 但是能否將其中一個端口配置為PWM功能口,而另一個端口配置為普通IO口呢?…

查看全部問答∨

LED散熱途徑散熱途徑說明

LED散熱途徑依據不同的封裝技術,其散熱方法亦有所不同,而LED各種散熱途徑方法約略可以下圖三示意之: LED散熱途徑散熱途徑說明: 從空氣中散熱 熱能直接由System circuit board導出 經由金線將熱能導出 若為共晶及Flip chip制程, ...…

查看全部問答∨

MSP430 LaunchPad 學習向導和實驗手冊

內容包括:LaunchPad 入門資料,有安裝軟件、有例子、有GRCC使用等 [ 本帖最后由 exiao 于 2012-7-1 13:10 編輯 ]…

查看全部問答∨

寬帶直流放大器

我現在是照著09年全國電子設計大賽c組的一等獎的設計報告在做寬帶直流放大器,求有做過的指點一下! 我用protues仿真找不到芯片vca810,還有opa610之類芯片。用protel99也找不到。怎么辦??! 最好有高手詳細說下做寬帶直流放大器的步驟, ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved