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

网站建设分金手指排名一昆明做烤瓷牙哪去柏德L网站

网站建设分金手指排名一,昆明做烤瓷牙哪去柏德L网站,深圳微商城网站设计公司,网站上动态图片怎么做一、初始化 理论知识链接#xff1a; IIC理论知识 二、代码实现 1、SDA和SCL设置成开漏输出模式 开漏输出的作用#xff1a; 因为IIC总线是一种双向的通信协议#xff0c;需要使用开漏输出实现共享总线。开漏输出类似于一种线与的方式#xff0c;即无论总线上哪个设备…一、初始化 理论知识链接 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.hkea.cn/news/14540407/

相关文章:

  • 门户网站建设注意事项可以做众筹的网站有哪些
  • 网站开发一般要用到哪些软件点点网 xml转wordpress
  • 微信小程序制作精灵seo都用在哪些网站
  • wordpress自动采集1024seo优化技巧
  • 宝塔面板做网站不能打开PHP显示404做网站的花费
  • 注册网站地址秦皇岛网站设计
  • 洛阳网站建设找洛阳铭信网络新余服装网站建设
  • 注册分公司流程及所需资料seo是什么味
  • 浙江 外贸网站建设买完域名接下来怎么弄
  • 成都网站建设哪家好山东省住房和城乡城乡建设厅网站
  • 郑州网站建设哪家强广州市研发网站建设价格
  • 柬埔寨网站建设开发区网站建设在哪
  • 游戏网站建设的目的电子产品定制开发
  • 电商erp网站开发公共资源交易中心级别
  • 为什么建设网站要年年交钱常见的网络营销形式有
  • 企业网站自助建设现在还有做网站的必要吗
  • 中企动力做的网站山西太原销售网站模板
  • 网站备案后可以修改吗化妆品网站建设需求问卷调查
  • 西安市建设工程信息网诚信平台官网长沙做网站seo优化外包
  • 网站建设的主要内容包括建设京东物流网站的目标是什么
  • 无锡八匹马网站建设腾讯邮箱企业邮箱登录
  • 网站标准字体样站内seo是什么意思
  • 正规营销型网站建设如何用两台电脑做服务器建网站
  • 长沙建站公司动画制作app
  • 网站开发网络公司flash 网站头部
  • 免费做网站的网站长沙建站公司模板
  • 做网站要备案吗 要几天网站设计济南
  • 用jsp做的网站代码上海做网站最低价
  • 山西省大同市网站建设公司重庆做网站开发的公司有哪些
  • 网站里添加图片超链接怎么做软件设计工资一般多少