• Jetsonnano B01 笔记5: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 w2@0x68 0x01 0x6b r16
    例如向 1 号总线上设备地址 0x68 ,寄存器地址 0x016b 开始,写入长度为 3 个字节的数据,
    写入 0x25 ,然后读出校验。
    i2ctransfer -f -y 1 w3@0x68 0x01 0x6b 0x25

    Python IIC库的使用:

    获取权限与环境:

    获取用户对2C总线操作权限:(yourname是表示你的用户名)

    1. Ssudo usermod -aG i2c $USER
    2. sudo usermod -aG i2c yourname
    3. …重启系统确保更改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.

  • 相关阅读:
    nginx 日志处理goaccess、shell
    MySQL 连接报错,致命错误怎么解决呢?
    【web前端】CSS盒子模型
    使用Keepalived实现双机热备,实现服务高可用
    ClaudeAPi接入
    Linux之Vim编辑命令
    第十九章,Java绘图
    心情不好就狂吃?好心情心理:这是病,得治!
    Horizontal Pod Autoscaler(HPA)
    Springboot毕设项目共享单车管理系统93je9(java+VUE+Mybatis+Maven+Mysql)
  • 原文地址:https://blog.csdn.net/qq_64257614/article/details/132787561