#!/bin/bash
设置I2C设备地址和寄存器地址
DEVICE_ADDRESS=0x10
REGISTER_ADDRESS=0x20
# 设置每次读取的字节数和循环次数
BYTES_PER_READ=10
LOOP_COUNT=10
# 循环读取数据
for ((i=0; i<$LOOP_COUNT; i++))
do
# 读取数据
i2ctransfer -y 1 w1@$DEVICE_ADDRESS 0x$REGISTER_ADDRESS r$BYTES_PER_READ > /dev/null 2>&1
data=$(i2ctransfer -y 1 w1@$DEVICE_ADDRESS 0x$REGISTER_ADDRESS r$BYTES_PER_READ)
# 打印读取的数据
echo "Read data: $data"
# 设置寄存器地址为下一次的读取
REGISTER_ADDRESS=$((REGISTER_ADDRESS + BYTES_PER_READ))
done
#!/bin/bash
# 设置I2C设备地址和寄存器地址
DEVICE_ADDRESS=0x10
REGISTER_ADDRESS=0x0020
# 设置每次读取的字节数和循环次数
BYTES_PER_READ=10
LOOP_COUNT=10
# 转换寄存器地址为16进制,并去掉0x前缀
REGISTER_HEX=$(printf "%04x" $REGISTER_ADDRESS | sed 's/0x//')
# 循环读取数据
for ((i=0; i<$LOOP_COUNT; i++))
do
# 读取数据
i2ctransfer -y 1 w2@$DEVICE_ADDRESS 0x$REGISTER_HEX r$BYTES_PER_READ > /dev/null 2>&1
data=$(i2ctransfer -y 1 w2@$DEVICE_ADDRESS 0x$REGISTER_HEX r$BYTES_PER_READ)
# 打印读取的数据
echo "Read data: $data"
# 设置寄存器地址为下一次的读取
REGISTER_ADDRESS=$((REGISTER_ADDRESS + BYTES_PER_READ))
REGISTER_HEX=$(printf "%04x" $REGISTER_ADDRESS | sed 's/0x//')
done
#!/bin/bash
DEVICE_ADDRESS=0x10
REGISTER_ADDRESS=0x0020
BYTES_PER_READ=10
LOOP_COUNT=10
REGISTER_HEX=$(printf "%04x" $REGISTER_ADDRESS | sed 's/0x//')
for ((i=0; i<$LOOP_COUNT; i++))
do
i2ctransfer -y 1 w2@$DEVICE_ADDRESS 0x$REGISTER_HEX r$BYTES_PER_READ > /dev/null 2>&1
data=$(i2ctransfer -y 1 w2@$DEVICE_ADDRESS 0x$REGISTER_HEX r$BYTES_PER_READ)
echo "Read data: $data"
REGISTER_ADDRESS=$((REGISTER_ADDRESS + BYTES_PER_READ))
REGISTER_HEX=$(printf "%04x" $REGISTER_ADDRESS | sed 's/0x//')
done
#!/bin/bash
# 设置I2C设备地址和寄存器地址
DEVICE_ADDRESS=0x10
REGISTER_ADDRESS=0x0020
# 设置要写入的数据
WRITE_DATA="0x1234"
# 分别写入高8位和低8位
HIGH_BYTE=$(printf "%02x" $((($REGISTER_ADDRESS >> 8) & 0xff)))
LOW_BYTE=$(printf "%02x" $(($REGISTER_ADDRESS & 0xff)))
i2ctransfer -y 1 w3@$DEVICE_ADDRESS 0x$HIGH_BYTE 0x$LOW_BYTE $WRITE_DATA
# 读取寄存器内容
READ_DATA=$(i2ctransfer -y 1 w2@$DEVICE_ADDRESS 0x$(printf "%02x" $((REGISTER_ADDRESS & 0xff))) r2)
echo "Read data: $READ_DATA"
#!/bin/bash
# 设置I2C设备地址和寄存器地址
DEVICE_ADDRESS=0x10
REGISTER_ADDRESS=0x0020
# 设置每次读取的字节数和循环次数
BYTES_PER_READ=10
LOOP_COUNT=10
# 循环读取数据
for ((i=0; i<$LOOP_COUNT; i++))
do
# 读取数据
HIGH_BYTE=$(printf "%02x" $(($REGISTER_ADDRESS >> 8)))
LOW_BYTE=$(printf "%02x" $(($REGISTER_ADDRESS & 0xff)))
i2ctransfer -y 1 w@$DEVICE_ADDRESS 0x$HIGH_BYTE 0x$LOW_BYTE r$BYTES_PER_READ > /dev/null 2>&1
data=$(i2ctransfer -y 1 w@$DEVICE_ADDRESS 0x$HIGH_BYTE 0x$LOW_BYTE r$BYTES_PER_READ)
# 打印读取的数据
echo "Read data: $data"
# 设置寄存器地址为下一次的读取
REGISTER_ADDRESS=$((REGISTER_ADDRESS + BYTES_PER_READ))
done