当前位置: 首页 > news >正文

完整的网站开发培训机构加盟店排行榜

完整的网站开发,培训机构加盟店排行榜,wordpress导航函数,自媒体创业计划书word模拟IIC通信 IIC 模拟IIC通信底层接口时间控制(通信速度)功能实现对外接口EEPROM相关 底层接口 device是可以用来增加多个IIC设备管理的 void I2C_SET_SCL(unsigned char device, unsigned char bit_value) {bit_value ? MCU_SCL_H() : MCU_SCL_L(); }void I2C_SET_SDA(uns…

模拟IIC通信

IIC

  • 模拟IIC通信
  • 底层接口
  • 时间控制(通信速度)
  • 功能实现
  • 对外接口
  • EEPROM相关

底层接口

device是可以用来增加多个IIC设备管理的

void I2C_SET_SCL(unsigned char device, unsigned char bit_value)
{bit_value ? MCU_SCL_H() : MCU_SCL_L(); 
}void I2C_SET_SDA(unsigned char device, unsigned char bit_value)
{bit_value ? MCU_SDA_H() : MCU_SDA_L();
}void I2C_SDA_OUT(unsigned char device)
{MCU_SDA_OUT(); 
}void I2C_SDA_IN(unsigned char device)
{MCU_SDA_IN(); 
}bool I2C_SDA_DATA(unsigned char device)
{bool boolDat = 0;boolDat = MCU_SDA_DATA();return boolDat;
}

时间控制(通信速度)

void i2c_delay_us(unsigned int us)
{unsigned int i, j;for (i = 0; i <= us; i++){for (j = 0; j <= 20; j++);}
}

功能实现

/* I2C CODE  */
#define i2c_speed_time1 40
#define i2c_speed_time2 20
#define i2c_speed_time3 20void I2C_Start(unsigned char device)
{I2C_SDA_OUT(device);I2C_SET_SDA(device, 1);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time1);I2C_SET_SDA(device, 0);i2c_delay_us(i2c_speed_time1);I2C_SET_SCL(device, 0);I2C_SET_SCL(device, 0);
}void I2C_Stop(unsigned char device)
{I2C_SDA_OUT(device);I2C_SET_SCL(device, 0);I2C_SET_SDA(device, 0);i2c_delay_us(i2c_speed_time1);I2C_SET_SCL(device, 1);I2C_SET_SDA(device, 1);i2c_delay_us(i2c_speed_time1);
}unsigned char I2C_Wait_Ack(unsigned char device)
{unsigned char ucErrTime = 0;I2C_SDA_IN(device);i2c_delay_us(i2c_speed_time2);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time2);while(I2C_SDA_DATA(device)){ucErrTime++;if(ucErrTime>250){I2C_Stop(device);return 1;}}I2C_SET_SCL(device, 0);return 0;
}void I2C_Ack(unsigned char device)
{I2C_SET_SCL(device, 0);I2C_SDA_OUT(device);I2C_SET_SDA(device, 0);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 0);
}void I2C_NAck(unsigned char device)
{I2C_SET_SCL(device, 0);I2C_SDA_OUT(device);I2C_SET_SDA(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 0);
}void I2C_Send_Byte(unsigned char device, unsigned char txd)
{unsigned char t;I2C_SDA_OUT(device);I2C_SET_SCL(device, 0);for(t=0; t<8; t++){if(txd & 0x80){I2C_SET_SDA(device, 1);}else{I2C_SET_SDA(device, 0);}txd <<= 1;i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 0);i2c_delay_us(i2c_speed_time3);}
}unsigned char I2C_Read_Byte(unsigned char device, unsigned char ack)
{unsigned char i,receive=0;I2C_SDA_IN(device);for(i=0; i<8; i++){I2C_SET_SCL(device, 0);i2c_delay_us(i2c_speed_time3);I2C_SET_SCL(device, 1);receive <<= 1;if(I2C_SDA_DATA(device)){receive++;}i2c_delay_us(i2c_speed_time3);}if(!ack){I2C_NAck(device);}else{I2C_Ack(device);}return receive;
}

对外接口

unsigned char i2c_write_byte(unsigned char addr, unsigned char offset, unsigned char len, unsigned char *pdata, unsigned char device)
{unsigned char i;I2C_Start(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Send_Byte(device, offset);I2C_Wait_Ack(device);for (i=0; i<len-1; i++){I2C_Send_Byte(device, *pdata);I2C_Wait_Ack(device);pdata++;}I2C_Send_Byte(device, *pdata);I2C_Wait_Ack(device);I2C_Stop(device);return 1;
}unsigned char i2c_read_byte(unsigned char addr, unsigned char offset, unsigned char len, unsigned char *pdata,unsigned char ack,unsigned char device)
{unsigned char i;I2C_Start(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Send_Byte(device, offset);I2C_Wait_Ack(device);I2C_Start(device);I2C_Send_Byte(device, addr|0x01);I2C_Wait_Ack(device);for (i=0; i<len-1; i++){*pdata = I2C_Read_Byte(device, ack);pdata++;}*pdata = I2C_Read_Byte(device, 0);I2C_Stop(device);return 1;
}/* 连续读,无应答 */
void I2C_ReadBurst_Ack(unsigned char addr,unsigned char offset,unsigned char len,unsigned char* pdata,unsigned char device)
{i2c_read_byte( addr, offset, len, pdata, 0, device);
}/* 连续读,有应答 */
void I2C_ReadBurst_NAck(unsigned char addr,unsigned char offset,unsigned char len,unsigned char* pdata,unsigned char device)
{i2c_read_byte( addr, offset, len, pdata, 1, device );
}/* 连续写 */
void I2C_WriteBurst(unsigned char addr,unsigned char offset,unsigned char len,unsigned char* pdata,unsigned char device)
{i2c_write_byte( addr, offset, len, pdata, device );
}/* 单个读 */
unsigned char I2C_ReadByte(unsigned char addr, unsigned char offset,unsigned char device)
{unsigned char u8RdData;i2c_read_byte( addr, offset, 1, &u8RdData, 0, device );return u8RdData;
}/* 单个写 */
void I2C_WriteByte(unsigned char addr, unsigned char offset, unsigned char u8Data,unsigned char device)
{i2c_write_byte( addr, offset, 1, &u8Data, device );
}

EEPROM相关

/* EEPROM */
unsigned char EEPROM_ReadByte(unsigned short int addr, unsigned char device)
{unsigned char temp = 0;I2C_Start(device);I2C_Send_Byte(device, 0XA0);I2C_Wait_Ack(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Start(device);I2C_Send_Byte(device, 0XA1);I2C_Wait_Ack(device);temp = I2C_Read_Byte(device, 0);I2C_Stop(device);return temp;
}void EEPROM_WriteByte(unsigned char addr, unsigned char dat, unsigned char device)
{i2c_delay_us(2);I2C_Start(device);I2C_Send_Byte(device, 0XA0);I2C_Wait_Ack(device);I2C_Send_Byte(device, addr);I2C_Wait_Ack(device);I2C_Send_Byte(device, dat);I2C_Wait_Ack(device);I2C_Stop(device);delay_ms(5); // 延时
}void EEROM_WriteNByte(const unsigned char *pbuf, unsigned char device)
{int iCurNum, iCur8ByteNum ;for (iCurNum = 0; iCurNum < 32; iCurNum ++ ){I2C_Start(device);I2C_Send_Byte(device, 0XA0);I2C_Wait_Ack(device);I2C_Send_Byte(device, iCurNum * 8);I2C_Wait_Ack(device);for (iCur8ByteNum = 0; iCur8ByteNum < 8; iCur8ByteNum ++){I2C_Send_Byte(device, pbuf[iCurNum * 8+iCur8ByteNum]);I2C_Wait_Ack(device);}I2C_Stop(device);}
}
http://www.zhongyajixie.com/news/26330.html

相关文章:

  • 做网站维护和客服需要学什么福州网站建设方案外包
  • 石家庄电商网站开发百度指数app官方下载
  • 用本机做网站浏览软件开发需要学什么
  • 网页设计师要求什么专业百度seo如何做
  • 自己做网站卖机器设备chrome官网下载
  • 毕业设计做网站大小有什么要求bt磁力猪
  • 网站建设进程方案女教师网课入侵录屏
  • 去别人网站挂黑链百度招聘平台
  • 新疆品牌网站建设公司erp123登录入口
  • 网站 色调seo黑帽是什么
  • 网站 怎么做百度才能搜索出来手把手教你优化网站
  • 深圳58同城网站建设在线优化网站
  • 广州企业如何建网站宁波seo外包推广公司
  • 餐饮网站建设设计价格长沙seo网络优化
  • 供应链管理平台官网网站关键词怎么优化到首页
  • 网站建设常见问题处理搜索引擎营销经典案例
  • 文山知名网站建设哪家好上海seo优化
  • 用java怎么做网站厉害的seo顾问
  • 火车头wordpress建站群crm系统成功案例分享ppt
  • 没有网站怎样做外贸最近在线直播免费观看
  • 手机网站建设运营方案黄页网站推广公司
  • 福州网站设计网址别做网络推广员
  • 兰州疫情最新消息1小时内数据seo的含义
  • 山西电力建设三公司网站建立网站的基本步骤
  • 有什么网站做交流会长尾词在线挖掘
  • win7如何做网站大连seo网站推广
  • wordpress 评论 验证莆田百度快照优化
  • wordpress进入站点18款禁用网站app直播
  • 视频解析网站域名查询 站长查询
  • 广告接单平台app泸州网站优化推广