




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、STM32 模擬 iic 驅動 eeprom24c128void IIC_Init(void)/IIC 初始化函數GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE,ENABLE);/使能GPIOB 時鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_S
2、peed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_2|GPIO_Pin_3);/PE2,PE3 輸出高void IIC_Start(void)/IIC 開始函數SDA_OUT(); /sda 線輸出IIC_SDA=1;IIC_SCL=1;delay_us(5);IIC_SDA=0;/START:when CLK is high,DATA change form high to lowdelay_us(5);IIC_SCL=0; /鉗住I2C 總線,準備發送或接收數據void IIC_
3、Stop(void) /IIC 停止函數SDA_OUT();/sda 線輸出IIC_SCL=0;IIC_SDA=0; /STOP:when CLK is high DATA change form low to highdelay_us(5);IIC_SCL=1;IIC_SDA=1;/ /發送I2C 總線結束信號delay_us(5);u8 IIC_Wait_Ack(void)/等待應答u8 ucErrTime=0;SDA_IN(); /SDA 設置為輸入IIC_SDA=1;delay_us(5);delay_us(1);while(READ_SDA)ucErrTime+;if(ucErrTi
4、me>250)IIC_Stop();return 1;IIC_SCL=0;/時鐘輸出 0return 0;void IIC_Ack(void) /SDA 輸出低電平,IIC 應答IIC_SCL=0;SDA_OUT();IIC_SDA=0;delay_us(2);IIC_SCL=1;delay_us(4);/SDA 輸出高電平,IIC 非應答void IIC_NAck(void)IIC_SCL=0;SDA_OUT();IIC_SDA=1;delay_us(2);IIC_SCL=1;delay_us(4);IIC_SCL=0;void IIC_Send_Byte(u8 txd)/IIC 發送
5、一個字節u8 t;SDA_OUT();/數據線輸出模式IIC_SCL=0; /拉低時鐘開始數據傳輸for(t=0;t<8;t+)IIC_SDA=(txd&0x80)>>7;txd<<=1;delay_us(5);/對 TEA5767 這三個延時都是必須的delay_us(5);IIC_SCL=0;delay_us(5);u8 IIC_Read_Byte(unsigned char ack) /IIC 讀取一個字節unsigned char i,receive=0;SDA_IN(); /SDA 設置為輸入for(i=0;i<8;i+ )IIC_SCL=
6、0;delay_us(5);IIC_SCL=1;receive<<=1;if(READ_SDA)receive+;delay_us(5);if (!ack)IIC_NAck(); /發送 nACKelseIIC_Ack(); /發送ACKreturn receive;void AT24CXX_Init(void)/AT254C128 初始化IIC_Init();u8 AT24CXX_ReadOneByte(u16 ReadAddr) /AT24C128 讀取一個字節u8 temp=0;IIC_Start();IIC_Send_Byte(0XA0); /發送寫命令IIC_Wait_A
7、ck();IIC_Send_Byte(ReadAddr>>8); /發送高地址IIC_Wait_Ack();IIC_Send_Byte(ReadAddr%256);/發送低地址IIC_Wait_Ack();IIC_Start();IIC_Send_Byte(0XA1);/進入接收模式IIC_Wait_Ack();temp=IIC_Read_Byte(0);IIC_Stop(); /產生一個停止條件return temp;void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite) IIC_Start();IIC_Send_Byte(
8、0XA0); /發送寫命令IIC_Wait_Ack();IIC_Send_Byte(WriteAddr>>8); /發送高地址IIC_Wait_Ack();IIC_Send_Byte(WriteAddr%256);/發送低地址IIC_Wait_Ack();IIC_Send_Byte(DataToWrite);/發送字節IIC_Wait_Ack();IIC_Stop(); /產生一個停止條件delay_ms(20);u8 AT24CXX_Check(void)u8 temp;temp=AT24CXX_ReadOneByte(12333); /避免每次開機都寫AT24CXXif(temp=0X55)return 0;else排除第一次初始化的情況AT24CXX_WriteOneByte(12333,0X55);temp=AT24CXX_ReadOneByte(12333);if(temp=0X55)return 0;return 1;void AT24CXX_Read(u16 ReadAddr,u8 *pBuffer,u16NumToRead)while(NumToRead) *pBuffer+=AT24CXX_ReadOneByte(ReadAddr+);NumToRead-;void AT24C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 伊春市新青區2025屆數學五下期末考試模擬試題含答案
- 貨物買賣合同協議書范本
- 2025年度個人股權融資合同樣本
- 智慧農業農業物聯網技術革新與實踐
- 智慧農業技術創新與人才培養策略
- 企業法律顧問服務合同示范文本
- 連鎖藥房加盟經營合同
- 軟件公司與程序員勞動合同
- 房產抵債合同范文
- 2024-2025年濟南天橋區濼口實驗學校第二學期七年級地理期中考試試題(含答案)
- 飛機空氣動力學課件:翼型的空氣動力特性
- 《地方鐵路運輸企業安全生產標準化建設規范》
- 農業科技的智能灌溉
- 森林防火護林員聘用合同
- 云梯高空作業車的施工方案
- 視覺設計基礎
- 初中語文數字化教學設計
- 國家職業技術技能標準 6-09-03-03 陶瓷工藝品制作師(試行) 2024年版
- 安全安全技術交底模板
- 中職教育基礎模板課件《集合的概念 》
- 靜密封知識完整版本
評論
0/150
提交評論