小车轮子测试(I2C)

news/2024/9/19 15:35:24/文章来源:https://www.cnblogs.com/qzt2cool/p/18302502

I2C总线是PHILIPS公司推出的一种在电子通信控制领域常用的串行通信总线,是一种简单、双向 通信、二线制、同步的串行总线,具有连接线少、控制简单、通信速率高等优点。

端口检测

cd /dev
ls

I2C读写操作

使用i2cdetect命令检测i2c总线

i2cdetect -l

如果红色部分出现unknown,则大概率为硬件问题,需要检查线路的连接

具体读写操作见附录

运行测试代码

  • cplusplus/level1_single_api/5_200dk_peripheral/i2c · Ascend/samples - 码云 - 开源中国 (gitee.com)

配置环境

sudo vim /etc/rc.local#在exit0前增加如下指令后,重启运行环境。
echo 504 >/sys/class/gpio/export
echo 444 >/sys/class/gpio/export
chown -R HwHiAiUser /sys/class/gpio/gpio444
chown -R HwHiAiUser /sys/class/gpio/gpio504
chown -R HwHiAiUser /sys/class/gpio/gpio444/direction
chown -R HwHiAiUser /sys/class/gpio/gpio504/direction
chown -R HwHiAiUser /sys/class/gpio/gpio444/value
chown -R HwHiAiUser /sys/class/gpio/gpio504/value
chown -R HwHiAiUser /dev/i2c-1
chown -R HwHiAiUser /dev/i2c-2
chown -R HwHiAiUser /dev/ttyAMA0
chown -R HwHiAiUser /dev/ttyAMA1
usermod -aG HwHiAiUser HwHiAiUser#重启使用指令sudo reboot,直接拔插电源线容易损坏镜像!!!
cd $HOME/samples/cplusplus/level1_single_api/5_200dk_peripheral/i2c/out
./main
#观察现象(车轮转动,运行环境的命令行中打印出运行结果)

附录

用i2cdump查看器件所有寄存器的值

#查看i2c-1的0x20器件的所有寄存器值:
i2cdump -f -y 1 0x20
#i2c_num: I2C控制器编号
#device_addr: 外围设备地址
#reg_addr: 外围设备寄存器的地址
#value: 写外围设备寄存器操作的数据

用i2cset设置单个寄存器值

# i2cset -f -y <i2c_num> <device_addr> <reg_addr> <value>
#设置i2c-1上0x20器件的0x05寄存器值为0x01
i2cset -f -y 1 0x20 0x05 0x01

用i2cget读取单个寄存器值

#i2cset -f -y <i2c_num> <device_addr> <reg_addr>
i2cget -f -y 1 0x20 0x05

打开 I2C 总线对应的设备文件,获取文件描述符

fd = open("/dev/i2c-2", O_RDWR);
如果fd的返回值为-1,则代表有问题,可能解决步骤如下:
ls -l /dev/ttyAMA0
#如果该设备节点存在并且具有相应的权限,表示该串口设备已被占用。如果没有显示任何结果,表示该串口设备当前没有被占用。

#执行下面的命令查看是被哪个进程占用了
fuser /dev/ttyAMA0

#查看这个进程的信息
ps 1423

#执行以下命令以停止终端登录程序:
sudo systemctl stop serial-getty@ttyAMA0.service#执行以下命令以禁用终端登录程序的自动启动:
sudo systemctl disable serial-getty@ttyAMA0.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/743969.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Simple WPF: WPF使用Windows API发送Toast通知

以前看到Windows 10的气泡通知觉得很有意思,但是一直不知道该如何实现。最近一次上网冲浪过程中偶然的机会看到了相关资料就自己来试试。本文介绍了在WPF框架下发送Win10 Toast通知的方法。以前看到Windows 10的气泡通知觉得很有意思,但是一直不知道该如何实现。最近一次上网…

卡通AI图片生成器

AI卡通生成器是一个AI工具,你可以毫不费力地用文本创建美丽的卡通图像! AI卡通生成器简介:创意与轻松相遇的地方!  有了我们创新的人工智能工具,用文字制作迷人的卡通图像就像点击一样简单。无论你是将可爱的人工智能动物带到生活中,还是用人工智能故事漫画讲述引人入胜…

[HGAME 2023 week3]kunmusic wp

今天写了一道Hgame的题,挺有意思的,写个blog记录一下 下载附件得到三个文件,先用dnspy打开dll文件,找到main函数,发现为对资源中data的加密。因此将data直接dump下来,对其进行解密,并将解密后的文件保存为111,脚本如下: file = open(rC:\Users\usr\Desktop\ctf题库\re…

Python中 `__pycache__` 文件夹是什么?

引言 当你编写一个独立的Python脚本时,目录结构看起来可能没什么特别。但随着项目逐渐变得复杂,你引言 当你编写一个独立的Python脚本时,目录结构看起来可能没什么特别。但随着项目逐渐变得复杂,你可能会倾向于将一些功能分离到其他模块或包中。这时,你可能会发现在源文件…

WPF 滚动轮播文字(走马灯效果)

使用 Control 实现自定义控件,源码可加微信号:microsoft-zh

0185-在 VSCode 中远程调试

环境Time 2022-11-13 WSL-Ubuntu 22.04 QEMU 6.2.0 Rust 1.67.0-nightly VSCode 1.73.1前言 说明 参考:https://os.phil-opp.com/minimal-rust-kernel 目标 将上一节编写的可执行文件制作成 QEMU 可以启动的镜像。使用 QEMU 启动后,使用 VSCode 远程调试。 启动 QEMU 脚本 #!…

mac整体配置安装hadoop

根据自身芯片系统下载虚拟机 下载vm虚拟机:Download VMware Fusion | VMware VMware Fusion对应的CentOS8下载的版本为:CentOS-8-XX-aarch64-dvd-custom-XX.iso。 配置yum:参考博客:https://blog.csdn.net/qq_29759839/article/details/125860618 core-site.xml <confi…

理想的文件摆渡系统,了解一下!

"文件摆渡"通常指在不同系统、设备或平台之间传输文件的过程,可以是手动摆渡,比如使用USB闪存驱动器、移动硬盘等物理存储设备来移动文件,也可以是自动化摆渡,比如通过网络或专门的文件摆渡系统来实现文件的传输。为了保护内部数据安全,企业通过会进行网络隔离,…

想看源码但是无从下口怎么办?

相信不少同学都有欧阳这种情况,年初的时候给自己制定了一份关于学习英语和源码的详细年度计划。但是到了实际执行的时候因为各种情况制定的计划基本都没有完成,年底回顾时发现年初制定的计划基本都没完成。痛定思痛,第二年年初决定再次制定一份学习英语和源码的详细年度计划…

C++11标准库 互斥锁 mutex 梳理

目录<mutex>std::call_once函数例程:使用call_once实现的单例模式std::mutex类 -- 独占互斥锁成员函数std::recursive_mutex类 -- 递归互斥锁使用注意:描述:std::timed_mutex类 -- 超时互斥锁描述:成员函数:std::recursive_timed_mutex类std::lock_guard模板类函数原型:s…

【译】The danger of TaskCompletionSource class

来自 Sergey Tepliakov的另一篇 https://devblogs.microsoft.com/premier-developer/the-danger-of-taskcompletionsourcet-class/#comments当使用async/await时,如果您想手动控制任务的生存期,TaskCompletionSource<T>类是一个非常有用的工具。下面是TaskCompletionSo…

Windows版PostgreSQL数据库下载及安装教程(关系型数据库管理系统)

前言 PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。PostgreSQL最初设想于1986年,当时被叫做Berkley Postgres Project。该项目一直到1994年都处于演进和修改中,直到开发人员Andrew Yu和Jolly Chen在Postgres中添加了一个SQL(Str…