梳理STM32F429之通信传输部分 |
您所在的位置:网站首页 › sda-page原理 › 梳理STM32F429之通信传输部分 |
/*********************************************************************************************************** 函 数 名: ee_CheckOk* 功能说明: 判断串行EERPOM是否正常* 形 参:无* 返 回 值: 1 表示正常, 0 表示不正常**********************************************************************************************************/uint8_t ee_CheckOk(void){ if (i2c_CheckDevice(EEPROM_DEV_ADDR) == 0) { return 1; } else { /* 失败后,切记发送I2C总线停止信号 */ i2c_Stop(); return 0; }} /*********************************************************************************************************** 函 数 名: ee_ReadBytes* 功能说明: 从串行EEPROM指定地址处开始读取若干数据* 形 参:_usAddress : 起始地址* _usSize : 数据长度,单位为字节* _pReadBuf : 存放读到的数据的缓冲区指针* 返 回 值: 0 表示失败,1表示成功**********************************************************************************************************/uint8_t ee_ReadBytes(uint8_t *_pReadBuf, uint16_t _usAddress, uint16_t _usSize){ uint16_t i; /* 采用串行EEPROM随即读取指令序列,连续读取若干字节 */ /* 第1步:发起I2C总线启动信号 */ i2c_Start(); /* 第2步:发起控制字节,高7bit是地址,bit0是读写控制位,0表示写,1表示读 */ i2c_SendByte(EEPROM_DEV_ADDR | EEPROM_I2C_WR); /* 此处是写指令 */ /* 第3步:等待ACK */ if (i2c_WaitAck() != 0) { goto cmd_fail; /* EEPROM器件无应答 */ } /* 第4步:发送字节地址,24C02只有256字节,因此1个字节就够了,如果是24C04以上,那么此处需要连发多个地址 */ i2c_SendByte((uint8_t)_usAddress); /* 第5步:等待ACK */ if (i2c_WaitAck() != 0) { goto cmd_fail; /* EEPROM器件无应答 */ } /* 第6步:重新启动I2C总线。前面的代码的目的向EEPROM传送地址,下面开始读取数据 */ i2c_Start(); /* 第7步:发起控制字节,高7bit是地址,bit0是读写控制位,0表示写,1表示读 */ i2c_SendByte(EEPROM_DEV_ADDR | EEPROM_I2C_RD); /* 此处是读指令 */ /* 第8步:发送ACK */ if (i2c_WaitAck() != 0) { goto cmd_fail; /* EEPROM器件无应答 */ } /* 第9步:循环读取数据 */ for (i = 0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |