做网站公司怎么样,wordpress 实时表单,免费域名申请流程,wordpress微信网站今日继续我的Jetsonnano学习之路#xff0c;今日学习的是IIC通信#xff0c;并尝试使用Jetson读取MPU6050陀螺仪数据。文章提供源码。文章主要是搬运的官方PDF说明#xff0c;这里结合自己实际操作作笔记。 目录
IIC通信#xff1a;
IIC硬件连线#xff1a; 安装IIC库文…今日继续我的Jetsonnano学习之路今日学习的是IIC通信并尝试使用Jetson读取MPU6050陀螺仪数据。文章提供源码。文章主要是搬运的官方PDF说明这里结合自己实际操作作笔记。 目录
IIC通信
IIC硬件连线 安装IIC库文件
终端I2C-Tools库的使用
i2cdetect i2cget
i2ctransfer
Python IIC库的使用
获取权限与环境
相关库函数 IIC通信 但Jetson与STM32等单片机不同它只需调用库读写IIC时序即可 IIC 也被称为 I2C Inter-Integrated Circuit 是 IICBus 简称所以中文应该叫集成电路 总线它是一种串行通信总线。 它是由数据线 SDA 和时钟 SCL 构成的串行总线可发送和接收数据。在 CPU ( 单片机 ) 与 IIC 模块之间、 IIC 模块与 IIC 模块之间进行双向传送。 IIC 的特点 IIC 是半双工而不是全双工。 IIC是真正的 多主机总线对比SPI在每次通信前都需要把主机定死而IIC可以在通 讯过程中改变主机如果两个或更多的主机同时请求总线可以通过冲突检测和仲裁防 止总线数据被破坏。 起始和终止信号都是由主机发出的连接到I2C总线上的器件若具有I2C总线的硬件接 口则很容易检测到起始和终止信号。 在起始信号后必须发送一个7位从机地址1位方向位用“0”表示主机发送数据“1”表 示主机接收数据。 每当主机向从机发送完一个字节的数据主机总是需要等待从机给出一个应答信号以 确认从机是否成功接收到了数据。 起始信号是必需的结束信号和应答信号都可以不要。 注实际使用中一般是单片机作为主机其它器件作为从机单片机先向器件发送信 息表示要读取数据之后转变传输方向器件发送数据到单片机。 IIC硬件连线
IIC通信会使用到Jetson以下引脚 安装IIC库文件 启动 JetsonNano 主板然后打开命令行终端依次输入下方指令来安装 I2C 库。 sudo apt-get update sudo apt-get install -y i2c-tools
这里我是已经安装了库所以提示这个信息 指令输入后会提示输入密码输入即可~~ 安装完成后可输入下方指令来检查是否安装成功。 apt-cache policy i2c-tools 终端I2C-Tools库的使用
i2cdetect i2cdetect 用于检测系统上的 I2C 总线情况。依次输入下方指令可列出所有安装的总线。 i2cdetect -F 2 i2cdetect -l 依次输入下方指令可扫描挂载在总线上的设备例如1号总线。
i2cdetect -y -r -a 1
这是没有连接IIc设备的情况 当我们连接了MPU6050后就会发现某处有从器件地址为0x68 i2cget i2ccget用于查看设备单个寄存器值可用于单字节寄存器。 例如读取地址为0x68设备里0x6b寄存器的值输入下方指令
i2cget -y 1 0x68 0x6b i2ctransfer i2ctransfer 用于读写设备寄存器值可用于双字节寄存器。例如向 1 号总线上设备地址 0x68 寄存器地址 0x016b 开始 16 个字节的数据输入下列指令 i2ctransfer -f -y 1 w20x68 0x01 0x6b r16 例如向 1 号总线上设备地址 0x68 寄存器地址 0x016b 开始写入长度为 3 个字节的数据 写入 0x25 然后读出校验。 i2ctransfer -f -y 1 w30x68 0x01 0x6b 0x25 Python IIC库的使用 获取权限与环境 获取用户对2C总线操作权限yourname是表示你的用户名 Ssudo usermod -aG i2c $USER
sudo usermod -aG i2c yourname…重启系统确保更改2C等有效一 安装Python3的库 sudo apt-get install python3-smbus 相关库函数 网址smbus2 · PyPI Currently supported features are: Get i2c capabilities (I2C_FUNCS) read_byte_data write_byte_data read_word_data write_word_data read_i2c_block_data write_i2c_block_data It is developed on Python 2.7, but should work in Python 3.X too.