ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PCA9685通过IIC协议控制多个舵机方法

2020-06-26 14:39:39  阅读:746  来源: 互联网

标签:信号 舵机 芯片 SDA IIC PCA9685 I2C


IIC概述:
IIC:两线式串行总线,它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbs以上。
时钟线SCL:在通信过程起到控制作用。
数据线SDA:用来一位一位的传送数据。
IIC分为软件IIC和硬件IIC
软件IIC:
软件IIC通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。
硬件IIC:
一块硬件电路,硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件(固件)I2C是直接调用内部寄存器进行配置。
1.硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。
2.IIC是半双工通信方式
IIC通信协议
IIC通信过程由开始、结束、发送、响应、接收五个部分构成。
1、(在发送、接收数据的时候)当SCL为高电平时,SDA线不允许变化;当SCL线为低电平时,SDA线可以任意0、1变化。
2、(在任意时候)只有当SCL为高电平时,IIC电路才对SDA线上的电平(0或者1)进行记录,当SCL线为低电平时,无论SDA是高还是低,IIC电路都不对SDA进行采样。
空闲状态
在介绍上面五个部分前,我们首先说说空闲状态,什么是空闲状态,就是没有通信时的状态(初始状态)
I2C总线的SDA和SCL两条信号同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
开始信号与停止信号
开始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平。
停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。
应答信号
发送器每发送一个字节,就在时钟脉冲9期间释放数据先,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间位稳定的低电平。如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。
接收数据
发送数据是一位一位发送,接收数据也是一位一位接收进来,最后返回应答信号。
PCA9685 控制多个舵机方法
PCA9685 芯片特点 :
PCA9685 是一款专门为 LED 背光调节而设计的控制芯片. 为了提高性能,芯片专门针对红/绿/蓝/琥 珀( RGBA) 等颜色的混合进行优化. PCA9685 芯片主要通过输出 PWM 脉冲来控制 LED 亮度,其主要特 点有: 1) 芯片工作电压范围为2. 3 ~5. 5 V,每路输出可以设置为25 mA 电流吸收能力的开漏模式,也可以 设置为提供10 mA 拉电流的推挽模式. 2) 芯片输出的频率范围为40 ~1 000 Hz,其内置有25 MHz 振荡器,也可以外接时钟以便多个不同器 件间同步. 3) 芯片采用I2C 总线方式读写芯片,芯片有四个可编程I2C 总线地址,这使得设备组可以任意组合并 能同时被寻址. 有6 个硬件地址引脚,这使得同一 I2C 总线上可以连接多达62 个 PCA9685 芯片. 4) 芯片可以独立输出16 路可调 PWM 脉冲,并具备12 位的分辨率. 5) PCA9685 芯片具有 TSSOP28 和 HVQFN28 两种封装形式,其中常用的 TSSOP28 封装下的芯片。
控制原理:
要实现 PCA9685 PWM 波的输出,需要经过芯片访问地址确定、控制模式选择、PWM 波长设定、占空 比计算等几个主要步骤.

  1. 芯片访问地址确定. PCA9685 芯片访问格式,访问地址 由8 个字节组成,最高位固定为 1,最低位为读写模式选择,第二位到第七 位由芯片外接电平确定. 本系统中 6 个硬件地址引脚全部接低电平,由此 可以得出写芯片命令为0X80H,读芯片命令为0X81H. PCA9685 共有255 个控制寄存器,向对应的控制寄 存器写入控制字可以实现芯片不同的功能,其中地址 00 ~ 01H 定义了芯片的工作模式,地址 02h—05h 定义了 I2C总线的子地址,地址 06h ~45h 定义了 16 个输出端口控制寄存器. 每个端口输出波形由高 四位控制寄存器和低八位控制寄存器分别控制.
  2. 控制模式选择. PCA9685 有两种工作模式,一般 PCA9685 芯片都设定在模式1 工作方式下,对应 的寄存器地址为 00h,其中的 8 位控制字可以设置芯片的外部时钟信号输入、休眠、重启、地址自动加、从 地址访问等工作状态. 具体的 C 语言程序代码为: write8( PCA9685_MODE1,0x0) ,其中: write8( ) 为 I2C 写 函数; PCA9685_MODE1 为模式1 寄存器地址,该命令可以将 PCA9685 工作设定在无外部时钟信号输入、 禁止休眠、不准重启、地址不自动加模式下.
  3. PWM 波长设定. 舵机控制所需的 PWM 周期为20 ms. 在用 PCA9685 作为多舵机控制器时,需要将 其 PWM 输出周期设定为20 ms,即PWM 波的频率设定为50 Hz,PCA9685 输出频率与振荡器有关,频率的 设置值
    在这里插入图片描述
    经计算,当需要输出50 Hz 的 PWM 频率时,设定值为121. 将该值下载到频率设定寄存器就可以改变芯片 工作频率. 需要注意的是,频率的更改只能在 PCA9685 芯片处于休眠状态下进行。

标签:信号,舵机,芯片,SDA,IIC,PCA9685,I2C
来源: https://blog.csdn.net/weixin_48022248/article/details/106953845

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有