當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]硬件平臺:stm32f10xZET6開發(fā)環(huán)境:keil MDK uVisionv4.10開發(fā)語言:C、ST_lib_3.5固件庫EEPROM:電可擦可編程只讀存儲器。【stm32f10xZET6開發(fā)板的I2C外設(shè)物理層特點】(1)兩條串行總線:一條雙向數(shù)據(jù)線(SDA),一條時

硬件平臺:stm32f10xZET6
開發(fā)環(huán)境:keil MDK uVisionv4.10
開發(fā)語言:C、ST_lib_3.5固件庫

EEPROM:電可擦可編程只讀存儲器。

【stm32f10xZET6開發(fā)板的I2C外設(shè)物理層特點】
(1)兩條串行總線:一條雙向數(shù)據(jù)線(SDA),一條時鐘線(SCL);
(2)從設(shè)備地址唯一;
(3)支持總線仲裁;
(4)三種速率傳輸模式:
標(biāo)準(zhǔn)模式100kbit/s
快速模式400kbit/s
高速模式3.4Mbit/s (目前大多I2C設(shè)備尚不支持高速模式)
(5)片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整;
(6)連接到相同總線的IC數(shù)量受到總線的最大電容400pF限制;

【I2C接口特性】
(1) STM32 中和大容量型號芯片均有多達 2 個I2C總線接口;
(2) 能夠工作于多主機或多從機模式,主從均可收發(fā);
(3) 支持標(biāo)準(zhǔn)模式 100Kbit/s 和快速模式 400Kbit/s,不支持高
速模式;
(4) 支持 7 位或 10 位從設(shè)備地址尋址;
(5) 內(nèi)置了硬件 CRC 發(fā)生器/ 校驗器;
(6) I2C 的接收和發(fā)送都可以使用 DMA 操作;
(7) 支持系統(tǒng)管理總線(SMBus)總線 2.0 版;

typedef struct
{
uint32_t I2C_ClockSpeed; /*!< 指定時鐘總線速率,100/400kHz */
uint16_t I2C_Mode; /*!< 指定為I2C通信模式 */
uint16_t I2C_DutyCycle; /*!< 指定I2C快速模式 */
uint16_t I2C_OwnAddress1; /*!< 指定從設(shè)備自身地址,7/10bit(地址0x0A對應(yīng)宏) */
uint16_t I2C_Ack; /*!< 使能或禁止ack */
uint16_t I2C_AcknowledgedAddress; /*!< 指定7/10bit從設(shè)備地址下的ack */
} I2C_InitTypeDef;

在 stm32 如何建立與 EEPROM 的通訊步驟:
(1) 配置 I/O 端口,確定并配置 I2C 的模式,使能 GPIO 和 I2C
時鐘。
(2) 寫:
1) 檢測 SDA 是否空閑;
2) 按 I2C 協(xié)議發(fā)出起始信號;
3) 發(fā)出 7 位器件地址和寫模式;
4) 要寫入的存儲區(qū)首地址;
5) 用頁寫入方式或字節(jié)寫入方式寫入數(shù)據(jù);
6) 發(fā)送 I2C 通訊結(jié)束訊信號
每個操作之后要檢測“事件”確定是否成功。寫完后檢測 EEPROM 是否進
入 standby 狀態(tài)。
(3) 讀:
1) 檢測 SDA 是否空閑;
2) 按 I2C 協(xié)議發(fā)出起始訊號;
3) 發(fā)出 7 位器件地址和寫模式(偽寫);
4) 發(fā)出要讀取的存儲區(qū)首地址;
5) 重發(fā)起始訊號;第 260 頁 共 729 頁
6) 發(fā)出 7 位器件地址和讀模式;
7) 接收數(shù)據(jù);
類似寫操作,每個操作之后要檢測“事件”確定是否成功。

I2C_GenerateSTART(); // 產(chǎn)生 I2C 的通訊起始信號 S
I2C_Send7bitAddress(); // 發(fā)送7位從設(shè)備地址
I2C_SendData(); // 發(fā)送一個數(shù)據(jù)字節(jié)(8bit)
I2C_GenerateSTOP(); // 產(chǎn)生 I2C 的通訊停止信號 P
I2C_CheckEvent (); // I2C 傳輸時的事件監(jiān)測

/*代碼演示-mian.c*/

/**

******************************************************************************

*@filemain.c

*@authorfire

*@versionV1.0

*@date2013-xx-xx

*@briefI2CEEPROM(AT24C02)測試,測試信息通過USART1打印在電腦的超級終端

******************************************************************************

*/

#include"stm32f10x.h"

#include"bsp_usart1.h"

#include"bsP_i2c_ee.h"

#include"bsP_led.h"

#include

#defineEEP_Firstpage0x00

u8I2c_Buf_Write[256];

u8I2c_Buf_Read[256];

voidI2C_Test(void);

/**

*@brief主函數(shù)

*@param無

*@retval無

*/

intmain(void)

{

/*串口1初始化*/

USART1_Config();

printf("rn這是一個I2C外設(shè)(AT24C02)讀寫測試例程rn");

//LED_GPIO_Config();

/*I2C外設(shè)初(AT24C02)始化*/

I2C_EE_Init();

printf("rn這是一個I2C外設(shè)(AT24C02)讀寫測試例程rn");

I2C_Test();

while(1)

{

}

}

/**

*@briefI2C(AT24C02)讀寫測試

*@param無

*@retval無

*/

voidI2C_Test(void)

{

u16i;

printf("寫入的數(shù)據(jù)nr");

for(i=0;i<=255;i++)//填充緩沖

{

I2c_Buf_Write[i]=i;

printf("0x%02X",I2c_Buf_Write[i]);

if(i%16==15)

printf("nr");

}

//將I2c_Buf_Write中順序遞增的數(shù)據(jù)寫入EERPOM中

//LED1(ON);

I2C_EE_BufferWrite(I2c_Buf_Write,EEP_Firstpage,256);

//LED1(OFF);

printf("nr寫成功nr");

printf("nr讀出的數(shù)據(jù)nr");

//將EEPROM讀出數(shù)據(jù)順序保持到I2c_Buf_Read中

//LED2(ON);

I2C_EE_BufferRead(I2c_Buf_Read,EEP_Firstpage,256);

//LED2(OFF);

//將I2c_Buf_Read中的數(shù)據(jù)通過串口打印

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

{

if(I2c_Buf_Read[i]!=I2c_Buf_Write[i])

{

printf("0x%02X",I2c_Buf_Read[i]);

printf("錯誤:I2CEEPROM寫入與讀出的數(shù)據(jù)不一致nr");

return;

}

printf("0x%02X",I2c_Buf_Read[i]);

if(i%16==15)

printf("nr");

}

printf("I2C(AT24C02)讀寫測試成功nr");

}

/*代碼演示-bsp_i2c_ee模塊*/

#ifndef__I2C_EE_H

#define__I2C_EE_H

#include"stm32f10x.h"

/*

*AT24C022kb=2048bit=2048/8B=256B

*32pagesof8byteseach

*

*DeviceAddress

*1010A2A1A0R/W

*10100000=0XA0

*10100001=0XA1

*/

/*EEPROMAddressesdefines*/

#defineEEPROM_Block0_ADDRESS0xA0/*E2=0*/

//#defineEEPROM_Block1_ADDRESS0xA2/*E2=0*/

//#defineEEPROM_Block2_ADDRESS0xA4/*E2=0*/

//#defineEEPROM_Block3_ADDRESS0xA6/*E2=0*/

void I2C_EE_Init

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉