STM32模擬iic驅動eeprom24c128_第1頁
STM32模擬iic驅動eeprom24c128_第2頁
STM32模擬iic驅動eeprom24c128_第3頁
STM32模擬iic驅動eeprom24c128_第4頁
STM32模擬iic驅動eeprom24c128_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論