I2C协议及PCA9685控制芯片

I2C总线协议

自驾仪的主控芯片一般具有多种资源与传感器或其他外设进行通信, 包括串口、I2C、SPI、QSPI等。I2C总线具有简单、有效的特点, 能够有效减少芯片管脚和线路连接的数量, 本文介绍的PCA9685舵机控制器就是采用I2C与主控芯片进行通信的。
I2C总线是由Philips公司开发的, 是一种简单的双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
I2C总线一般由两根数据传输线构成:一根时钟线 (SCL) 、一根数据线 (SDA) 。I2C总线协议一般要求每次发送字节的长度必须为8位, 每次通信由主机、从机两端完成。整个通信过程如图1所示[6]。

I2C写操作流程为
1.主机发起开始信号;
2.主机发送I2C地址 (7位) 和写操作0 (1位) , 等待确认;
3.从机发送确认;
4.主机发送寄存器地址 (8位) , 等待确认;
5.从机发送确认;
6. 主机发送数据 (8位) , 即要向寄存器中写入的数据, 等待确认;从机发送确认;
7.主机发起停止。
I2C读操作流程为:
1.主机发送I2C地址 (7位) 和写操作0 (1位) , 等待确认;
2.从机发送确认;主机发送寄存器地址 (8位) , 等待确认;
3. 主机发送开始;主机发送I2C地址 (7位) 和读操作 (1位) , 等待确认;
4. 从机发送确认;从机发送数据 (8位) 。
5.主机发送确认。
 在这里插入图片描述从以上分析可以看出, I2C总线通信只需要两根线 (SCL和SDA) , 可并联多个外设使用, 通过每个外设的I2C地址区分不同外设。从机的I2C地址最低位代表读 (1) 或写 (0) 操作。

PCA9685的用途及特点

PCA9685是一款基于I2C总线控制的16路LED背光调节控制芯片。每一路LED输出端均可自由调节PWM波的频率 (40-1000Hz) 和占空比 (0%-100%) 。这款芯片主要通过输出不同占空比的PWM脉冲信号来控制舵机转动的角度, 其主要特点如下:

  1. PCA9685可编程调节16路PMW脉冲的占空比以及高电平到来的时刻, 分辨率为12位 (4096) 。
  2. 在快速模式下I2C总线的速率可以达到1MHz, 此外SDA端口30m A的驱动能力可以在高总线负荷上使用。
  3. PCA9685的PWM脉冲输出频率范围为40~1000Hz, 它内置的25MHz振荡器和外部时钟可以选择使用。
  4. PCA9685的硬件地址被设计为6位, 这样在同一个I2C总线上可以连接62个同一芯片;每个芯片有4个基于I2C总线的软件可编程地址, 并且任一芯片可以被同时或单独寻址。
  5. PCA9685的电压工作范围为2.3~5.5V, 使用温度为-40℃~+85℃。

PCA9685舵机控制的实现

通常PCA9685与舵机连接需要三根线, 分别是电源线、控制线和地线, 其中控制线是PWM脉冲的输出端, 电源线和地线为舵机内部的直流电机供电。舵机转动的角度和控制线PWM脉冲的宽度 (占空比) 成正比, 1ms对应0°, 2ms对应180°, 并且脉宽在1~2ms之间变化时, 舵机角度从0°~180°线性增长。因此, 要实现对舵机的控制, 需要在PCA9685正确的地址设工作模式、PWM脉冲的频率及占空比即可。
1.芯片访问地址的确认
PCA9685的访问地址由芯片的6位硬件地址引脚连接电平决定, 最高位为1不变, 最低位用于区分I2C通信的读写模式, 主控芯片通过该地址向PCA9685的不同寄存器写入不同数据, 就可以控制PCA9685向舵机发送想要的PWM脉冲。
2.PMW脉冲频率的设置
PCA9685脉冲输出频率的范围为40~1000Hz, 一般舵机控制需要的频率为50Hz。计算公式为:在这里插入图片描述
其中prescal为向频率设定寄存器 (地址为0XFEH) 中写入的值, EXTCLK为主控芯片的时钟信号, refresh_rate为期望得到的PWM脉冲频率, 这里为50。实现代码为:在这里插入图片描述
3. 脉冲宽度的设置
PCA9685的任一通道均有4个寄存器用于设置12位计数器以此来实现脉宽调节, 分别用于控制高电平开始到结束的时刻, 一般将LEDn_ON设置为0, 如果脉宽为duty, 则LEDn_OFF的计算公式如下:在这里插入图片描述
实现代码为:在这里插入图片描述

总结:

在PCA9685 LED控制芯片的基础上, 通过I2C总线协议, 设计了一种可产生16路PWM脉冲, 并可灵活设置频率及占空比的舵机控制实现途径。经过本文的分析及设计, 最终从原理上实现了这一应用, 有效减轻了硬件设计和软件设计的工作量, 是一种行之有效的解决办法。

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1.1python软件的安装 先安装python软件优先,因为其他步骤如果用到sudo apt-get update 会导致python程序不是py2而是py3,就用不了我们的程序了 树莓派鼓励用户使用python和C++作为其开发语言,所以原则上可以不用安装python的编译器,但是树莓派自带的python(IDLE)和Thonny python IDE都过于简陋,不太适合python使用者进行复杂的OpenCV开发。在这里推荐Spyder作为树莓派的python IDE。这种编译器相对上述两种编译器略显笨重,但是对内核和运算值的控制更加灵活。   树莓派安装Spyder非常的方便,在命令行输入: sudo apt-get install spyder 下载时间可能比较长,因为在安装spyder3的同时很多python开发开发必要的依赖也一并被安装到树莓派里了,这也说明牺牲一定的空间下载spyder3是值得的。此时,我们已经可以在树莓派的开始菜单-programming中看到编译器了。注意: 1、 在下载spyder之前请不要输入 “sudo apt-get update/upgrade”, 否则会下载适用于python3.6的spyder,无法正常使用,比如图1-0中的spyder的python版本就是3.6,说明下载出现错误。 2、 如果看不到编译器说明安装过程出错,尝试重新执行:sudo apt-get update和 sudo apt-get install spyder3两条命令。   图 1-0下载完成后,在“start”中已经能看到Spyder编译器了     图 1-00 Spyder3的Python3.6版本 我们可以在preference/syntax coloring scheme中更换自己喜欢的主题,怎么样?是不是已经觉得树莓派和普通PC一样方便了呢?现在我们已经可以用在树莓派上舒适的开发python了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值