如何与网站管理员联系培训机构招生7个方法
2026/5/18 13:45:13 网站建设 项目流程
如何与网站管理员联系,培训机构招生7个方法,品牌微信网站开发,响应式网站有哪些内部集成电路#xff08;IIC/I2C#xff09; 基本概念 英文全称Inter Integrated Circuit#xff0c;简称IIC或I2C#xff0c;是半双工同步串行通信接口协议1982年由飞利浦公司#xff08;现恩智浦半导体#xff09;设计推出设计初衷#xff1a;为微控制器#xff08;…内部集成电路IIC/I2C基本概念英文全称Inter Integrated Circuit简称IIC或I2C是半双工同步串行通信接口协议1982年由飞利浦公司现恩智浦半导体设计推出设计初衷为微控制器MCU与外围芯片提供简洁、可靠、低成本的通信方案简化硬件设计和系统集成引脚说明仅需两根引脚即可通信硬件设计简洁数据线SDASerial Data传输实际数据信息时钟线SCLSerial Clock同步数据传输的时序控制所有支持IIC接口的外围设备传感器、存储器等可直接挂载在两根总线上支持多机通信架构主从结构单一主设备控制多个从设备多主结构多个主设备协同工作核心机制通过地址识别和仲裁机制实现设备间有序通信总线结构采用开漏输出结构可实现多设备双向通信与总线仲裁避免电平冲突连接方式所有外围器件的SCL和SDA均挂载在主控芯片提供的IIC总线上形成共享信号通道空闲状态上拉电阻将SCL和SDA均拉至高电平总线处于待命状态随时响应起始条件线与逻辑多设备共享同一总线某设备输出低电平时总线被拉低仅当所有设备释放总线输出高阻态上拉电阻才将总线恢复高电平核心作用是IIC多主设备通信的基础实现总线冲突检测与仲裁保证数据传输有序性简化硬件设计、降低系统成本仲裁过程当两个或多个主设备同时尝试发起通信时仲裁过程如下‌同时启动‌假设主设备A和主设备B同时检测到总线空闲并开始发送各自的起始条件和设备地址。‌逐位比对‌在每一个时钟周期SCL为高电平时两个设备会同时在SDA线上输出一位数据并立即采样SDA线的实际电平。‌仲裁失败判定‌‌如果一个设备试图发送逻辑“1”即释放SDA让上拉电阻拉高但采样到的总线电平为逻辑“0”则说明有另一个设备正在发送逻辑“0”并成功拉低了总线。此时试图发送“1”的设备立即判定为仲裁失败。‌‌12‌失败方退出‌仲裁失败的设备会立即停止驱动SCL和SDA总线转为监听模式不再发送任何时钟或数据以避免干扰胜出方的通信。‌1‌胜出方继续‌仲裁成功的设备会继续完成其完整的通信过程发送地址、读写数据、停止条件等整个过程对胜出方来说是透明且无中断的。‌1‌失败方重试‌仲裁失败的设备在检测到总线再次变为空闲后可以重新尝试发起通信。通信速率支持多种速率适配不同场景标准速率100KHZ满足多数基本控制和配置需求快速速率400KHZ适用于高性能外围器件的高速应用场景通信机制半双工同一时间仅能执行接收或发送操作无法双向同时传输适用场景侧重控制指令传输设备控制、传感器读取、配置管理不适合大规模数据交换通信过程与时序分析通信流程主机生成开始信号主机发送从设备地址7位或10位 读写控制位bit00写操作bit01读操作从设备识别地址后应答主机开始传输或接收数据数据传输完成后主机生成停止信号通信结束空闲状态SCL时钟线和SDA数据线均为高电平由IIC总线的上拉电阻拉高开始条件SCL处于高电平期间将SDA数据线的电平拉低标志通信开始传输数据时序同步方式IIC以时钟脉冲的电平进行同步区别于SPI的边沿同步数据稳定性要求SCL低电平期间SDA可切换电平准备下一位数据SCL高电平期间SDA必须保持稳定确保数据可靠读取传输规则以字节为单位传输MSB高位在前需持续8个时钟脉冲应答条件时序位置字节传输8个时钟周期后第9个时钟脉冲期间应答标志接收方将SDA拉低表示应答ACK保持高电平表示非应答NACK控制方式应答位可通过软件使能或禁止停止条件SCL处于高电平期间将SDA数据线的电平拉高标志通信结束器件地址常规格式7位二进制数数据手册明确标注扩展格式10位二进制数需占用两个字节传输地址类型包括设备自身地址和广播呼叫地址广播呼叫地址检测可通过软件使能/禁止作用实现多设备识别确保数据准确传输到目标设备时序模拟硬件限制MCU内部硬件IIC接口数量有限如部分MCU仅3个两种实现方式硬件IIC使用专用IIC引脚需复用引脚功能并配置初始化IO口模拟IIC通过普通IO口模拟IIC时序不受硬件接口数量限制可移植性更高代码此处为了理解时序引脚配置为推挽实际要配置为开漏/* Private define ------------------------------------------------------------*/// 引脚定义 自行选择要用的引脚 此处不做定义#defineIIC_SDA_PIN#defineIIC_SDA_GPIO_PORT#defineIIC_SDA_GPIO_CLK#defineIIC_SCL_PIN#defineIIC_SCL_GPIO_PORT#defineIIC_SCL_GPIO_CLK// IIC引脚电平操作#defineIIC_SDA_LOW()GPIO_ResetBits(IIC_SDA_GPIO_PORT,IIC_SDA_PIN)#defineIIC_SDA_HIGH()GPIO_SetBits(IIC_SDA_GPIO_PORT,IIC_SDA_PIN)#defineIIC_SCL_LOW()GPIO_ResetBits(IIC_SCL_GPIO_PORT,IIC_SCL_PIN)#defineIIC_SCL_HIGH()GPIO_SetBits(IIC_SCL_GPIO_PORT,IIC_SCL_PIN)#defineIIC_SDA_READ()GPIO_ReadInputDataBit(IIC_SDA_GPIO_PORT,IIC_SDA_PIN)/* Private functions ---------------------------------------------------------*//** * brief IIC底层GPIO初始化 * param None * retval None */voidIIC_LowLevel_Init(void){GPIO_InitTypeDef GPIO_InitStructure;// 使能GPIO时钟RCC_AHB1PeriphClockCmd(IIC_SDA_GPIO_CLK|IIC_SCL_GPIO_CLK,ENABLE);// IIC引脚配置推挽输出上拉符合IIC总线规范GPIO_InitStructure.GPIO_ModeGPIO_Mode_OUT;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_InitStructure.GPIO_OTypeGPIO_OType_PP;GPIO_InitStructure.GPIO_PuPdGPIO_PuPd_UP;// 上拉// SDA引脚配置GPIO_InitStructure.GPIO_PinIIC_SDA_PIN;GPIO_Init(IIC_SDA_GPIO_PORT,GPIO_InitStructure);// SCL引脚配置GPIO_InitStructure.GPIO_PinIIC_SCL_PIN;GPIO_Init(IIC_SCL_GPIO_PORT,GPIO_InitStructure);// 总线空闲状态SDA/SCL均为高IIC_SDA_HIGH();IIC_SCL_HIGH();delay_us(10);// 初始延时}/** * brief IIC SDA引脚模式切换输出/输入 * param Mode: 引脚模式GPIO_Mode_OUT/GPIO_Mode_IN * retval None */voidIIC_SDAPinModeSet(GPIOMode_TypeDef Mode){GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(IIC_SDA_GPIO_CLK,ENABLE);GPIO_InitStructure.GPIO_ModeMode;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_InitStructure.GPIO_OTypeGPIO_OType_PP;GPIO_InitStructure.GPIO_PuPdGPIO_PuPd_UP;// 上拉GPIO_InitStructure.GPIO_PinIIC_SDA_PIN;GPIO_Init(IIC_SDA_GPIO_PORT,GPIO_InitStructure);}/** * brief IIC起始信号SCL高时SDA从高拉低 * param None * retval None */voidIIC_Start(void){IIC_SDAPinModeSet(GPIO_Mode_OUT);IIC_SDA_HIGH();IIC_SCL_HIGH();delay_us(5);// 时序延时保证总线稳定IIC_SDA_LOW();delay_us(5);IIC_SCL_LOW();}/** * brief IIC停止信号SCL高时SDA从低拉高 * param None * retval None */voidIIC_Stop(void){IIC_SDAPinModeSet(GPIO_Mode_OUT);IIC_SCL_LOW();IIC_SDA_LOW();delay_us(5);IIC_SCL_HIGH();delay_us(5);IIC_SDA_HIGH();delay_us(5);}/** * brief IIC发送1字节数据MSB先行 * param byte: 待发送字节 * retval None */voidIIC_Send(uint8_tbyte){uint8_tcnt0;IIC_SDAPinModeSet(GPIO_Mode_OUT);for(cnt0;cnt8;cnt){IIC_SCL_LOW();delay_us(2);// 输出当前位最高位先行if(byte0x80)IIC_SDA_HIGH();elseIIC_SDA_LOW();delay_us(2);byte1;IIC_SCL_HIGH();delay_us(2);}IIC_SCL_LOW();delay_us(2);}/** * brief 检测IIC从机应答 * param None * retval true: 应答成功 false: 无应答 */boolIIC_IsACK(void){bool statusfalse;IIC_SDAPinModeSet(GPIO_Mode_IN);// 切换为输入模式读应答delay_us(2);IIC_SCL_LOW();delay_us(2);IIC_SCL_HIGH();delay_us(2);// 从机应答SDA拉低if(!IIC_SDA_READ())statustrue;elsestatusfalse;IIC_SCL_LOW();delay_us(2);returnstatus;}/** * brief 主机发送应答/非应答 * param ack: 0应答 1非应答 * retval None */voidIIC_SendAck(uint8_tack){IIC_SDAPinModeSet(GPIO_Mode_OUT);IIC_SCL_LOW();delay_us(2);if(ack)IIC_SDA_HIGH();// 非应答elseIIC_SDA_LOW();// 应答delay_us(2);IIC_SCL_HIGH();delay_us(2);IIC_SCL_LOW();delay_us(2);}/** * brief IIC读取1字节数据MSB先行 * param None * retval 读取到的字节 */uint8_tIIC_Read(void){uint8_tcnt0;uint8_tdata0;IIC_SDAPinModeSet(GPIO_Mode_IN);for(cnt0;cnt8;cnt){IIC_SCL_LOW();delay_us(2);IIC_SCL_HIGH();delay_us(2);data1;data|IIC_SDA_READ();// 读取当前位delay_us(1);}IIC_SCL_LOW();delay_us(2);returndata;}OLED屏的原理与应用基本概念英文全称Organic Light Emitting Diode有机发光二极管核心特性自发光无需背光、对比度高、厚度薄、视角广、反应速度快、可挠曲、使用温度范围广、构造及制程简单0.96寸OLED屏关键参数分辨率128*64颜色选项黄蓝1/4黄光3/4蓝光固定区域、纯白黑底白字、纯蓝黑底蓝字接口方式5种6800并行、8080并行、3线SPI、4线SPI、IIC通过屏上BS0~BS2引脚配置模块类型七针SPI/IIC兼容模块、四针IIC模块驱动芯片主流芯片SSD1306本屏所用核心特点内置升压功能无需额外设计升压电路也支持外部升压参考数据手册存储结构每页128字节共8页刚好匹配128**64点阵*与SSD1106的区别SSD1106每页132字节共8页移植注意用0.96寸OLED移植1.3寸SSD1106程序时需将显示地址向右偏移2否则右侧4个像素点显示异常器件地址IIC从设备地址默认0x787位地址地址构成011110 SA0 R/W#SA0位地址扩展位可选择01111000x78或01111010x79由D/C#引脚控制R/W#位操作模式选择R/W#1为读模式R/W#0为写模式硬件要求SDA和SCL引脚需连接上拉电阻硬件接线核心引脚VCC电源、GND地、SCLIIC时钟线、SDAIIC数据线接线原则按模块引脚定义与MCU的IIC引脚或模拟IIC的IO口对应连接确保电源电压匹配参考模块数据手册点击此处获取移植代码效果取模操作取模软件需使用专用字模软件生成汉字、图片的点阵数据存入字模库oledfont.h图片取模参数汉字取模参数

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询