梳理STM32F429之通信传输部分

您所在的位置:网站首页 sda-page原理 梳理STM32F429之通信传输部分

梳理STM32F429之通信传输部分

2023-03-29 18:48| 来源: 网络整理| 查看: 265

/*********************************************************************************************************** 函 数 名: 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