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

joomla 网站 html 空广南酒店网站建设

joomla 网站 html 空,广南酒店网站建设,山东大标网络,wordpress百度贴吧一、初始化 理论知识链接: IIC理论知识 二、代码实现 1、SDA和SCL设置成开漏输出模式 开漏输出的作用: 因为IIC总线是一种双向的通信协议,需要使用开漏输出实现共享总线。开漏输出类似于一种线与的方式,即无论总线上哪个设备…

一、初始化

理论知识链接:

IIC理论知识

二、代码实现

1、SDA和SCL设置成开漏输出模式

开漏输出的作用:

  • 因为IIC总线是一种双向的通信协议,需要使用开漏输出实现共享总线。
  • 开漏输出类似于一种线与的方式,即无论总线上哪个设备下拉了,所有设备都能知道。
  • IIC总线通常需要使用上拉电阻来保证总线上的高电平。

以GD32为例,使用普通GPIO模拟IIC,初始化如下:

//PA1  --  SDA
//PA2  --  SCL#define iic_addr         0x30      //根据从机地址进行修改
#define GPIO_PORT_I2C    GPIOA  //根据引脚进行修改
#define GPIO_RCC_I2C     RCU_GPIOA//根据引脚进行修改
#define GPIO_SCL_I2C     GPIO_PIN_2//根据引脚进行修改
#define GPIO_SDA_I2C     GPIO_PIN_1//根据引脚进行修改
#define delay_time       2    //2us//将引脚设置成开漏输出
void iic_init()
{rcu_periph_clock_enable(GPIO_RCC_I2C);//启动时钟gpio_mode_set(GPIO_PORT_I2C, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_SCL_I2C | GPIO_SDA_I2C);//默认上拉gpio_output_options_set(GPIOA, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_SCL_I2C | GPIO_SDA_I2C);//设置开漏输出i2c_stop();//复位一下
}

2、写启动信号

启动信号表现形式为:

  • 静默状态:SCL、SDA为高电平。
  • 启动信号:SCL为高电平时,SDA由高电平变成低电平
#define I2C_SCL_H    gpio_bit_set(GPIO_PORT_I2C,GPIO_SCL_I2C)//拉高
#define I2C_SCL_L    gpio_bit_reset(GPIO_PORT_I2C,GPIO_SCL_I2C)//拉低
#define I2C_SDA_H    gpio_bit_set(GPIO_PORT_I2C,GPIO_SDA_I2C)//拉高
#define I2C_SDA_L    gpio_bit_reset(GPIO_PORT_I2C,GPIO_SDA_I2C)//拉低//启动信号
/*
SCL   ————————————————————\\___________SDA   ——————————\\____________________
*/
void i2c_start()
{I2C_SDA_H;I2C_SCL_H;delay_us(delay_time);I2C_SDA_L;delay_us(delay_time);I2C_SCL_L;delay_us(delay_time);
}

3、写终止信号

终止信号表现形式为:

  • 静默状态:SCL高电平、SDA为低电平。
  • 终止信号:SCL为高电平时,SDA由低电平变成高电平
/*
SCL   ————————————————————————————————————————SDA                      /——————————————————_________________/
*/
void i2c_stop()
{I2C_SDA_L;I2C_SCL_H;delay_us(delay_time);I2C_SDA_H;
}

4、发送一个字节数据

void i2c_sendbyte(unsigned char data)
{unsigned char i;for(i = 0; i < 8; i++)//8bit = 1byte{if(data & 0x80)//取出最高位{I2C_SDA_H;}else{I2C_SDA_L;}delay_us(delay_time);I2C_SCL_H;delay_us(delay_time);I2C_SCL_L;if(i == 7){I2C_SDA_H;//释放总线}data <<= 1;delay_us(delay_time);}
}

5、接收一个字节数据

#define I2C_SDA_READ   gpio_input_bit_get(GPIO_PORT_I2C,GPIO_SDA_I2C)unsigned char i2c_readbyte()
{unsigned char i;unsigned char data = 0x00;for(i = 0; i < 8; i++){data <<= 1;I2C_SCL_H;delay_us(delay_time);if(I2C_SDA_READ){data |= 0x01;//存入数据}I2C_SCL_L;delay_us(delay_time);}return data;
}

6、产生一个ACK信号

  • SCL为低电平时,SDA写入低电平
  • SCL为高电平时,SDA读取低电平
  • 读取完成后将SDA拉高
/*
SCL	         /————————\_______/           \________________SDA	                           /————————————————————————————————————__________________________/
*/
void i2c_ack()
{I2C_SDA_L;delay_us(delay_time);I2C_SCL_H;delay_us(delay_time);I2C_SCL_L;delay_us(delay_time);I2C_SDA_H;
}

7、产生一个NACK信号

void i2c_nack()
{I2C_SDA_H;delay_us(delay_time);I2C_SCL_H;delay_us(delay_time);I2C_SCL_L;delay_us(delay_time);
}

8、检测是否从机是否返回ACK

//0:表示ACK    1:表示NACK
unsigned char i2c_read_ack()
{unsigned char re;I2C_SDA_H;delay_us(delay_time);I2C_SCL_H;delay_us(delay_time);if(I2C_SDA_READ) re = 1;else             re = 0;I2C_SCL_L;delay_us(delay_time);return re;
}

9、发送地址和读操作,并读回一个字节数据

unsigned char read_data()
{i2c_start();//启动信号i2c_sendbyte(iic_addr | 0x01);//发送地址和读位if(i2c_read_ack()) return 0;//如果没有读到ACK,终止执行。unsigned char data = i2c_readbyte();//读取数据i2c_stop();//发送终止信号return data;//返回接收的数据
}
http://www.yayakq.cn/news/412183/

相关文章:

  • 乐清网站制作公司电话做网站哪个公司好 快选宁陵建站宝
  • 精品资料网站营销网站的成功案例
  • 北郊网站建设wordpress 引用视频
  • 苏州建设网站制作多用户网站制作
  • asp.net获取网站虚拟目录软件开发有哪些类型
  • 学校网站建设答辩苏州专业网站制作设计
  • 微网站在线制作网站优化排名技巧
  • 个人做游戏下载网站侵权吗北京seo排名服务
  • 网上卖货哪个平台比较好抓取的网站如何做seo
  • 西安微信网站建设公司禅城技术支持骏域网站建设
  • 企业管理专业主要课程南宁网站seo大概多少钱
  • 营销型网站建设遨龙非寻服饰网站建设规划书
  • 烟台海阳市专业做网站公司 做网站
  • 品牌网站建设有哪些方面邢台做移动网站多少钱
  • 企业内网网站建设找个人做网站还是找企业做网站
  • 张店易宝网站建设网站建设多少钱裙
  • 网站推广软件污电商网站模板建站
  • 一级a做爰片2202网站辽宁建网站
  • 网站工商备案查询班级网站建设模板
  • 广州建筑工程公司名单浙江专业网站seo
  • 手表网网站用万网建设网站教程视频
  • 网站整合营销建设深圳优化企业
  • 注册网站时跳过验证码上海公司注册网上核名
  • cms 多个网站精品wordpress 模板
  • 自己做网站还能挣钱吗固安企业网站建设
  • 网站开发的国内外研究现状创新设计案例100个
  • angularjs 网站模板网站建设与管理专业好找工作吗
  • 怎么做网店网站大连建设工程招标信息网官网
  • win7 iis架设网站大连科技公司建设网站
  • 做贸易进出口要什么网站平台泸州市住房和城乡建设厅官方网站