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

南昌网站建设公司如何万维网络(临沂网站建设)

南昌网站建设公司如何,万维网络(临沂网站建设),没有网站做cpa怎么赚钱,网站的总体风格包括Linux 学习记录59(ARM篇) 本文目录 Linux 学习记录59(ARM篇)一、IIC总线1. 概念2. IIC总线硬件连接 二、系统框图三、IIC时序1. 起始信号 / 停止信号2. 数据传输信号3. 应答信号 / 非应答信号4. 寻址信号 四、IIC协议1. 主机给从机发送一个字节(写)2. 主机给从机发送多个连续字…Linux 学习记录59(ARM篇) 本文目录 Linux 学习记录59(ARM篇)一、IIC总线1. 概念2. IIC总线硬件连接 二、系统框图三、IIC时序1. 起始信号 / 停止信号2. 数据传输信号3. 应答信号 / 非应答信号4. 寻址信号 四、IIC协议1. 主机给从机发送一个字节(写)2. 主机给从机发送多个连续字节3. 从机给主机发送一个字节(读)4. 从机给主机发送多个连续字节 五、软件模拟IIC1. IIC的GPIO初始化2. 宏定义及函数声明3. 切换SDA的GPIO模式4. 起始信号5. 停止信号6. 等待应答信号7. ACK应答8. 发送/读取一个字节 一、IIC总线 1. 概念 I2C总线是PHLIPS公司在八十年代初推出的一种串行半双工同步总线主要用于连接整体电路 两个芯片之间通讯 SOC(stm32mp157a)------- IIC总线 -------温湿度传感器(si7006)两个设备之间通讯 PC------ UART总线 ------开发板 I2C总线为两线制只有两根双向信号线一根是数据线SDA另一根是时钟线SCL SDA数据线作用完成数据传输SCL时钟线作用完成数据收发同步 IIC传输速率 低速100K中速400K高速3.4M I2C硬件结构简单接口连接方便成本较低。因此在各个领域得到了广泛的应用、IIC总线外接两个上拉电阻作用在总线处于空闲状态时SCL线和SDA线处于高电平状态 2. IIC总线硬件连接 1. IIC总线支持多主机多从机模式在同一时刻只能与一个从机进行通讯 2. 在实际使用过程中大多数都使用单主机多从机模式 3. 挂接到IIC总线上的每个从机设备都有自己唯一的7位从机地址(从对应的芯片手册中进行查找从机地址) 4. 主动发起数据的叫做主机(起始信号)只能被动接收数据的叫做从机 5. 在总线上发送数据叫做发送器接收数据的叫做接收器 6. 起始信号、时钟信号、停止信号都是由主机产生 7. 时钟信号只能由主机产生作用给从机完成数据收发同步二、系统框图 三、IIC时序 1. 起始信号 / 停止信号 1、起始信号在SCL为高电平期间SDA从高到低的变化(下降沿) 2、停止信号在SCL为高电平期间SDA从低到高的变化(上升沿) 3、起始信号和停止信号由主机产生 4、起始信号产生之后总线处于占用状态 5、停止信号产生之后总线处于空闲状态2. 数据传输信号 1、在SCL为高电平期间数据线上数据保持稳定接收器从数据线上读取数据 2、在SCL为低电平期间数据线上数据允许发生变化发送器向数据线上写入数据3. 应答信号 / 非应答信号 1、每一个字节必须保证是8位长度数据传输时先传送最高位在传送低位每一个被传送的字节后面都必须跟随一位应答位一帧数据 8位数据位 1位应答位 9位2、发送器在发送完8位数据之后接收器在第九个时钟周期返回一个应答信号(0)/非应答信号(1) 第九个时钟周期接收器向数据线上写入应答/非应答信号 第九个时钟周期发送器从数据线上读 读0应答信号 读1非应答信号4. 寻址信号 1、IIC总线上数据传输是广义的包括从机地址传输数据信号 2、在起始信号产生之后寻址从机需要发送7位从机地址 读(1)/写(0) 3、从总线上读取数据7位从机地址 读(1) 4、向总线上写入数据7位从机地址 写(0)四、IIC协议 1. 主机给从机发送一个字节(写) 主机作为 “发送器” 从机作为“接收器” IIC_Start();//起始信号 /*add_RH 为从机地址例如0x40 或上0表示要写入数据*/ IIC_Send_Byte((add_RH 1) | 0);//发送从机地址 IIC_Wait_Ack();//等待回应 /*USER_W表示要写入的寄存器或命令*/ IIC_Send_Byte(USER_W);//发送从机地址 IIC_Wait_Ack();//等待回应 /*start_M表示要写入该寄存器的数据*/ IIC_Send_Byte(start_M);//发送从机地址 IIC_Wait_Ack();//等待回应 IIC_Stop();2. 主机给从机发送多个连续字节 每发送一个8位数据后寄存器地址自动偏移 3. 从机给主机发送一个字节(读) uint8_t buf; IIC_Start();//起始信号 /*add_RH 为从机地址例如0x40 或上0表示要写入数据*/ IIC_Send_Byte(add_RH 1);//发送从机地址 IIC_Wait_Ack();//等待回应 /*USER_R表示要读取的寄存器或命令*/ IIC_Send_Byte(USER_R);//发送从机命令 IIC_Wait_Ack();//等待回应 /*从机开始作为发送方*/ IIC_Start();//起始信号 /*add_RH 为从机地址例如0x40 或上1表示要读取数据*/ IIC_Send_Byte((add_RH 1) |1);//发送从机地址 IIC_Wait_Ack();//等待回应 /*IIC_R_NACK 表示不读取后续数据*/ buf IIC_Read_Byte(IIC_R_NACK);//IIC读取一个字节 IIC_Stop();4. 从机给主机发送多个连续字节 五、软件模拟IIC 1. IIC的GPIO初始化 //初始化IIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_MP_AHB4_ENSETR | (0x1 1);//使能GPIO F-E时钟;//使能GPIOB时钟//GPIOB8,B9初始化设置GPIO_InitStructure.GPIO_Pin IIC_SCL_Pin;GPIO_InitStructure.GPIO_Mode GPIO_Mode_OUT;//普通输出模式GPIO_InitStructure.GPIO_OType GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed GPIO_Fast_Speed;//100MHzGPIO_InitStructure.GPIO_PuPd GPIO_PuPd_UP;//上拉GPIO_Init(IIC_GPIOx, GPIO_InitStructure);//初始化GPIO_InitStructure.GPIO_Pin IIC_SDA_Pin;GPIO_Init(IIC_GPIOx, GPIO_InitStructure);//初始化IIC_SCL_H;//将时钟线和数据线拉高IIC_SDA_H; }2. 宏定义及函数声明 #define IIC_GPIOx GPIOF#define IIC_R_ACK 1 #define IIC_R_NACK 0#define IIC_SCL_Pin 14 #define IIC_SDA_Pin 15#define IIC_SCL_H GPIO_SetBits(IIC_GPIOx,IIC_SCL_Pin) #define IIC_SDA_H GPIO_SetBits(IIC_GPIOx,IIC_SDA_Pin)#define IIC_SCL_L GPIO_ResetBits(IIC_GPIOx,IIC_SCL_Pin) #define IIC_SDA_L GPIO_ResetBits(IIC_GPIOx,IIC_SDA_Pin)#define READ_SDA GPIO_ReadInputDataBit(IIC_GPIOx,IIC_SDA_Pin)//IIC所有操作函数 void IIC_Init(void); //初始化IIC的IO口 void IIC_Start(void); //发送IIC开始信号 void IIC_Stop(void); //发送IIC停止信号 void IIC_Send_Byte(uint8_t txd); //IIC发送一个字节 uint8_t IIC_Read_Byte(unsigned char ack);//IIC读取一个字节 uint8_t IIC_Wait_Ack(void); //IIC等待ACK信号 void IIC_Ack(void); //IIC发送ACK信号 void IIC_NAck(void); //IIC不发送ACK信号3. 切换SDA的GPIO模式 void SDA_OUT(void) {GPIO_InitTypeDef GPIO_InitStructure;//GPIOB8,B9初始化设置GPIO_InitStructure.GPIO_Pin IIC_SDA_Pin;GPIO_InitStructure.GPIO_Mode GPIO_Mode_OUT;//普通输出模式GPIO_InitStructure.GPIO_OType GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed GPIO_Fast_Speed;//100MHzGPIO_InitStructure.GPIO_PuPd GPIO_PuPd_UP;//上拉GPIO_Init(IIC_GPIOx, GPIO_InitStructure);//初始化 }void SDA_IN(void) {GPIO_InitTypeDef GPIO_InitStructure;//GPIOB8,B9初始化设置GPIO_InitStructure.GPIO_Pin IIC_SDA_Pin;GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN;//普通输出模式GPIO_Init(IIC_GPIOx, GPIO_InitStructure);//初始化 }4. 起始信号 //产生IIC起始信号 void IIC_Start(void) {SDA_OUT(); //sda线输出IIC_SDA_H;IIC_SCL_H;delay_us(4);IIC_SDA_L;//START:when CLK is high,DATA change form high to low delay_us(4);IIC_SCL_L;//钳住I2C总线准备发送或接收数据 }5. 停止信号 //产生IIC停止信号 void IIC_Stop(void) {SDA_OUT();//sda线输出IIC_SCL_L;IIC_SDA_L;//STOP:when CLK is high DATA change form low to highdelay_us(4);IIC_SCL_H;IIC_SDA_H;//发送I2C总线结束信号delay_us(4); }6. 等待应答信号 //等待应答信号到来 //返回值1接收应答失败 // 0接收应答成功 uint8_t IIC_Wait_Ack(void) {uint8_t ucErrTime0;SDA_IN(); //SDA设置为输入 IIC_SDA_H;delay_us(1); IIC_SCL_H;delay_us(1); while(READ_SDA){ucErrTime;if(ucErrTime250){IIC_Stop();return 1;}}IIC_SCL_L;//时钟输出0 return 0; }7. ACK应答 //产生ACK应答 void IIC_Ack(void) {IIC_SCL_L;SDA_OUT();IIC_SDA_L;delay_us(2);IIC_SCL_H;delay_us(2);IIC_SCL_L; } //不产生ACK应答 void IIC_NAck(void) {IIC_SCL_L;SDA_OUT();IIC_SDA_L;delay_us(2);IIC_SCL_H;delay_us(2);IIC_SCL_L; }8. 发送/读取一个字节 //IIC发送一个字节 //返回从机有无应答 //1有应答 //0无应答 void IIC_Send_Byte(uint8_t txd) { uint8_t t; SDA_OUT(); IIC_SCL_L;//拉低时钟开始数据传输for(t0;t8;t){if((txd0x80)7){IIC_SDA_H;}else{IIC_SDA_L;}txd1; delay_us(2); //对TEA5767这三个延时都是必须的IIC_SCL_H;delay_us(2); IIC_SCL_L; delay_us(2);} } //读1个字节ack1时发送ACKack0发送nACK uint8_t IIC_Read_Byte(unsigned char ack) {unsigned char i,receive0;SDA_IN();//SDA设置为输入for(i0;i8;i ){IIC_SCL_L; delay_us(2);IIC_SCL_H;receive1;if(READ_SDA)receive | 1; else receive | 0; delay_us(1); } if (!ack)IIC_NAck();//发送nACKelseIIC_Ack(); //发送ACK return receive; }
http://www.pierceye.com/news/334517/

相关文章:

  • 加热器网站怎么做的课程网站建设规划方案
  • 网站建设目标文档鄂州网站制作哪家好
  • 廉政建设网站微信运营
  • 什么样的网站结构适合做seo北京互联网建站网站
  • 工程科技 网站设计广东做seo的公司
  • 外贸都是在哪些网站做怎么做个手机版的网站
  • 北京社保网站做社保增减员锦绣大地seo官网
  • 分析影响网站排名的因素河南省住房和城乡建设厅网站文件
  • 宁城网站建设公司引流最好的推广方法
  • 辽宁省建设厅官方网站网站免费正能量直接进入浏览器下载安装
  • 怎么给公司建网站广州互联网营销师培训
  • 用阿里云做网站注意事项绵阳的网站建设公司哪家好
  • 电商网站设计工作内容深圳国际设计学院
  • 国内界面优秀的网站科技有限公司名字叫什么好
  • 网站底部悬浮代码搭建网站的主要风险
  • 长安网站建设公司常做网站首页的文件名
  • 学网站开发的能找什么工作赣州网站设计较好的公司
  • 网站建设接单微信营销软件收费排行榜
  • 佛山网站建设公司排名佛山微网站推广哪家专业
  • 招商网站建设网设备 光速东莞网站建设
  • 网站建设公司如何wordpress用多大主机
  • 东莞网站建设规范网页美工设计(第2版)素材
  • 论文 网站建设值得推荐的深圳app外包公司
  • 建网站的电脑可以换位置吗莆田建站培训
  • 外贸必看网站离职模板网
  • 内网网站建设正能量不良网站软件下载
  • 制作手机广告的网站吉林省建设厅网站评职称系统
  • 云南建设厅网站资质证书查询自动生成app
  • 柳州正规网站制作公司大连建设厅网站
  • 北京市保障房建设投资中心网站瘫痪广州大型网站建设公司排名