QN8027 IIC 模拟接口C语言
IIC
C语言实现
参考原子哥iic代码
时序图
#include "iic.h"void IIC_Init(void)
{ USER_GPIO->DATA_OUT |= (0x03);
}
void IIC_Start(void)
{GPIOWritePin(IIC_SDA,GPIO_SET);GPIOWritePin(IIC_SCL,GPIO_SET);delay_us(4);GPIOWritePin(IIC_SDA,GPIO_RESET);delay_us(4);GPIOWritePin(IIC_SCL,GPIO_RESET);
}
void IIC_Stop(void)
{ GPIOWritePin(IIC_SCL,GPIO_RESET);GPIOWritePin(IIC_SDA,GPIO_RESET);delay_us(6);GPIOWritePin(IIC_SCL,GPIO_SET);delay_us(3);GPIOWritePin(IIC_SDA,GPIO_SET);delay_us(3);
}
void IIC_Ack(void)
{uint16_t ucErrTime=0;delay_us(3); GPIOWritePin(IIC_SCL,GPIO_SET);delay_us(6); while(1){ucErrTime++;if(ucErrTime>300){//IIC_Stop();break;}}GPIOWritePin(IIC_SCL,GPIO_RESET);delay_us(15);return ;
} void IIC_Send_Byte(uint8_t txd)
{ uint8_t t; GPIOWritePin(IIC_SCL,GPIO_RESET);for(t=0;t<8;t++){ GPIOWritePin(IIC_SDA,(txd&0x80)>>7);txd<<=1; delay_us(5);GPIOWritePin(IIC_SCL,GPIO_SET);delay_us(5); GPIOWritePin(IIC_SCL,GPIO_RESET);//opt_delay(12);GPIOWritePin(IIC_SDA,GPIO_RESET);delay_us(5);}
}
void IICWrite(int reg, int data)
{IIC_Start();IIC_Send_Byte(0x58);IIC_Ack();IIC_Send_Byte(reg);IIC_Ack();IIC_Send_Byte(data);IIC_Ack();IIC_Stop();
}
uint8_t IICRead(int reg )
{int data=0;IIC_Start();IIC_Send_Byte(0x58);IIC_Ack();IIC_Send_Byte(reg);IIC_Ack();delay_us(5);IIC_Start();IIC_Send_Byte(0x59);IIC_Ack();Data = IIC_Read_Byte();IIC_Ack();IIC_Stop();return Data;
}
uint8_t IIC_Read_Byte()
{unsigned char i,receive=0;READ_SDA;for(i=0;i<8;i++ ){GPIOWritePin(IIC_SCL,GPIO_RESET);delay_us(5);GPIOWritePin(IIC_SCL,GPIO_SET);receive<<=1;if(READ_SDA)receive++; delay_us(5); }IIC_Ack(); return receive;
}
#ifndef __IIC_H
#define __IIC_H
#include "main.h"#define IIC_SCL 0
#define IIC_SDA 1
#define READ_SDA GPIOReadPin(1)void IIC_Init(void); //³õʼ»¯IICµÄIO¿Ú
void IIC_Start(void); //·¢ËÍIIC¿ªÊ¼ÐźÅ
void IIC_Stop(void); //·¢ËÍIICÍ£Ö¹ÐźÅ
void IIC_Send_Byte(uint8_t txd); //IIC·¢ËÍÒ»¸ö×Ö½Ú
void IIC_Ack(void); //IIC·¢ËÍACKÐźÅ
void IICWrite(int reg, int data);
uint8_t IICRead(int reg );
uint8_t IIC_Read_Byte();
#endif
QN8027 IIC 模拟接口C语言相关推荐
- NodeJs本地搭建服务器,模拟接口请求,获取json数据
最近在学习Node.js,虽然就感觉学了点皮毛,感觉这个语言还不错,并且也会一步步慢慢的学着的,这里实现下NodeJs本地搭建服务器,模拟接口请求,获取json数据. 具体的使用我就不写了,这个博客写 ...
- Ariduino入门笔记——1. Arduino 默认函数(数字接口/模拟接口)
说实话,对于我这种朝三暮四,动不动就要开新坑的人来说,肯定很多人都烦死了.没办法,因为脑袋里的猴子有点多,一直做一件事的话,我反而很容易就弃坑.也就是所谓新鲜感,隔一段时间回过头来看看草稿箱里有哪些稿 ...
- 计算机模拟软件分类,计算机水平考试-软件设计师分类模拟题程序语言(一)
计算机水平考试-软件设计师分类模拟题程序语言(一) (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 软件设计师分类模拟题程序语言(- ...
- c语言接口作用是什么,单片机接口C语言开发技术
单片机接口C语言开发技术 编辑 锁定 讨论 上传视频 <单片机接口C语言开发技术>是2009年清华大学出版社出版的图书,作者是龚运新.彭建军.[1] 书 名 单片机接口C语言开发技术 ...
- 基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)
一.项目介绍 当前文章介绍基于51单片机和SHT30传感器设计的环境温度与湿度检测设备.设备采用IIC模拟时序通信协议,能够实时监测环境的温度和湿度,并将数据通过LCD显示屏显示出来:可以广泛应用于室 ...
- c语言画图 钟表模拟程序,图形模拟时钟C语言课程设计
图形模拟时钟C语言课程设计 更新时间:2017/2/2 9:03:00 浏览量:640 手机版 学号13082101182014-2015学年第二学期 <高级语言程序设计> 课程设计报 ...
- Java开发中使用模拟接口moco响应中文时乱码
场景 在开发中需要依赖一些接口,比如需要请求一个返回Json数据的接口,但是返回Json数据的接口要么是没搭建,要么是交互比较复杂. 此时,就可以使用moco来模拟接口返回接口数据,以便开发和测试工作 ...
- Java开发中模拟接口工具moco的使用
场景 在开发中需要依赖一些接口,比如需要请求一个返回Json数据的接口,但是返回Json数据的接口要么是没搭建,要么是交互比较复杂. 此时,就可以使用moco来模拟接口返回接口数据,以便开发和测试工作 ...
- vue 接口数据排序_Vue 使用 axios 请求 mock 模拟接口的数据
安装使用 axios # axios 安装 使用npm install axios --save# main.js 引入 axiosimport axios from 'axios'Vue.proto ...
最新文章
- 康泰瑞影推高性能3D/4D超声可视化方案
- 我们公司是如何把项目中的2100个if-else彻底干掉的!
- 值得一做》关于并查集的进化题目 BZOJ1015(BZOJ第一页计划)(normal-)
- 数据的插入、更新、删除
- Hadoop如何迎击大数据分析的挑战
- QByteArray与char、int、float(及其数组)之间的互相转化
- android系统app打开蓝牙+设置可见性
- 用代码理解ObjC中的发送消息和消息转发
- 如何获取HTML元素所对应的javascript对象?
- 集成电路经典资料分享
- 检查pdf字体是否全部嵌入
- 使用高德地图JS API开发地图应用之获取Key及Jscode
- ibus mozc 日文输入法
- Android架构师能力素质模型
- Linux CentOS服务器时间同步阿里云北京时间
- 永恒之塔linux服务端,【永恒之塔单机5.8-6.5服务端】2020.06首发一键安装PC大型端游单机游戏客户端支持局域网联机玩[附视频搭建教程]...
- 【BOOST C++容器专题03】【05】Boost.CircularBuffer
- 中国超级计算机神威 上市公司,中国拟研发百亿亿级超级计算机 秒杀目前最快神威...
- 视频网站的工作原理-->m3u8视频文件的提取与解析(理论)
- css超出部分省略号显示