GPIO
GPIO全称: General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚。在RK平台上,除了部分有专门用途的pin(比如DDR、MIPI等),其他的pin,如果不配置复用的话,默认复用状态都是GPIO。RK的GPIO驱动,对上提供的是Linux下标准的GPIO接口。Linux下有一组用户态操作GPIO的sysfs节点。应用层对GPIO编程主要就是通过操作这几个节点来实现。

下面以操作GPIO3_A5为例进行介绍。此GPIO位置如下


在通用的Linux框架下面,所有GPIO都是用数字编号的。对于RK平台的芯片,其编号计算方式为
(gpio控制器号-0)*32+(端口号-‘A’)*8+索引序号
GPIO3_A5的控制器号为3,端口号为A,索引序号5,故编号为
(3-0)32+08+5=101
命令行操作GPIO
- 将GPIO 101设置为用户态操作
echo 101 > /sys/class/gpio/export
- 将GPIO 101设置为输出
echo out > /sys/class/gpio/gpio101/direction
- 在GPIO 101为输出的情形下,设置电平
- 高电平
echo 1 > /sys/class/gpio/gpio101/value
- 低电平
echo 0 > /sys/class/gpio/gpio101/value
- 将GPIO 101设置为输入
echo in > /sys/class/gpio/gpio101/direction
- 在GPIO 101为输入的情形下,读取其电平,1为高,0为低
cat sys/class/gpio/gpio101/value
- 取消GPIO 101用户态操作
echo 101 > /sys/class/gpio/unexport
- 执行效果

USB
- 将U盘通过USB挂载到系统上,操作如下:

# mkdir /mnt/usb
# mount /dev/block/sda1 /mnt/usb
# cd /mnt/usb
# ls
- 执行效果:

UART
Rockchip UART (Universal Asynchronous Receiver/Transmitter) 基于16550A串口标准。内核里面使用8250串口通用驱动,因此能够支持Linux下的标准串口编程。
- 板上有三路通用串口,还有一路调试串口,建议不要把调试串口用于其他用途。

- 这三路通用串口的序号分别是5、7、9(如果9号串口复用了i2c,就不要在使用了),在Linux下对应的设备节点分别是 /dev/ttyS5 /dev/ttyS7 (/dev/ttyS9) 。下面以 ttyS7 为例介绍其用法,其他几路串口也是类似的。
- 硬件上,使用串口模块连接ttyS7的TX 和RX,波特率:9600,接线图如下:

- 发送数据:
echo "youyeetoo" > /dev/ttyS7
执行效果:

I2C
- i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以读写I2C设备寄存器。
- i2c-tools使用方法:
- 查看所有的 i2c 总线。
# i2cdetect -l
- 查看指定i2c总线支持的功能
# i2cdetect -F 2
- 查看 i2c-2 总线上挂载的设备
# i2cdetect -a -y 2
图中出现'UU'表示该地址上面有设备并且设备与驱动程序匹配
图中出现'--'表示该地址上面没设备
图中出现'数字'表示该地址有设备但设备与驱动程序不匹配
- 查看 i2c-2 地址为0x42设备寄存器0x01的值
# i2cget -f -y 2 0x42 0x01
- 执行效果:

SPI
- 硬件连接

- 注意:测试spi总线是,需要打开对应的设备节点,,修改设备树如下:rk3588s-evb4-lp4x-yyt.dtsi

- 将开发板上电之后,进行
回环测试
dmesg -C
echo setspeed 0 1000000 > /dev/spi_misc_test
echo loop 0 10 255 > /dev/spi_misc_test
dmesg
- 执行效果:

PWM
- 硬件连接

- 测试 PWM7 为例,执行如下命令:
# cd /sys/class/pwm/pwmchip0/
# echo 0 > export
# cd pwm0
# echo 10000 > period
# echo 5000 > duty_cycle
# echo 1 > enable
- 执行结果:


CAN
CAN(Controller Area Network)控制器局域网,是一种高效、可靠的通信协议,用于实时控制和数据交换。它最初是由德国的BOSCH公司开发的,现在已经成为国际标准ISO 11898。CAN总线采用多主竞争式总线结构,支持多节点同时发送和接收数据,具有错误检测和自动重发功能,能够有效地提高系统的可靠性和实时性。CAN广泛应用于汽车、工业自动化、机器人等领域,是现代电子系统中不可或缺的一部分。
- can的使用
- 查询当前网络设备
ifconfig -a
- 设置can
canconfig can0 down
canconfig can0 type can bitrate 1000000 dbitrate 3000000 on
canconfig can0 up
canconfig can0 start
//或者
canconfig can0 down
canconfig can0 type can bitrate 1000000 loopback on
canconfig can0 up
canconfig can0 start
- can收发
cansend can0 -v -i 12 13 12 12
candump can0
ADC
- ADC(模数转换器)将模拟信号转换为数字信号,常用于电子设备中,如音频、视频处理和传感器应用。
- r1 开发板是12位的adc。
- r1开发板一共有两个adc通道,这里以通道4为例。使用命令
cat /sys/bus/iio/devices/iio\:device0/in_voltage4_raw
- 测试接VCC:

- 执行效果:

- 测试接GND:

- 执行效果:
