hi3516cv610的spi0上适配tmi8150b电机ic

确定硬件连接

这里我们只需连接这3根线

spi协议,控制电机;目前我们不需要 电机返回给主控数据

soc_cv610_Pin46复用为:spi0_CSN0

soc_cv610_Pin44复用为: SPI0_SDO

soc_cv610_Pin43复用为:spi0_SCLK

将Pin44、Pin43、Pin46脚复用为spi脚

寄存器操作

## spi
bspmm 0x17940098 0x1203
bspmm 0x1794009c 0x1203
bspmm 0x17940090 0x1203

复用后测试,这3Pin的电压
spi_SDI脚工作电压,一定要有3.3v

spi设备节点为

/dev/spidev0.0

tmi8150b有两个id

0x00=0x81

0x01=0x50

cv610为 spi的主机

tmi8150B挂载 spi_1上的,cv610控制 tmi8150B

如何用 ssp_read命令读 TMI8150B的id及其他信息

ssp_read  0x1  0x0  0x0  0x0  0x10  0x1  0x1  0x1

或

ssp_read  0x0  0x0  0x00  0x0  0x10  0x1  0x1  0x1

0x1:SPI控制器,代表 spi_1

0x0:片选号,片选号为 0,对应dev节点 /dev/spidev1.0; 若这里为 0x1,则对应设备节点为 /dev/spidev1.1

0x0:外围设备地址,0x0

spi模式为 中断模式(为默认的)

常见问题:

1、Y轴电机有震动,不旋转
解决方法:可能是8150b周边的电阻、电容没贴好

tmi8150B控制ir_cut

ir寄存器为 0x11

1、打开 ir_cut

bit7~bit1

1000 0100(二进制)= ‭0x84(16进制)‬

往 0x11里写 0x84打开ir_cut

2、打开 ir_cut,滤光片拨过去,保持状态

bit7~bit1

1000 1100(二进制)= ‭0x8C(16进制)‬

往 0x11里写 0x8C打开ir_cut,滤光片拨过去,保持状态

3、关闭 ir_cut,滤光片拨回

bit7~bit1

0000 1000(二进制)= ‭0x8(16进制)

往 0x11里写 0x8关闭ir_cut,滤光片拨回

4、关闭 ir_cut,滤光片拨回,保持状态

bit7~bit1

0000 1100(二进制)= ‭0xC(16进制)

往 0x11里写 0xC关闭ir_cut,滤光片拨回,保持状态

// 加 ir_cut控制
IRCUT_control(2);   // 关闭 ir_cut
sleep(3);
// IRCUT_control(3);   // 打开 ir_cut
sleep(3);
// IRCUT_control(1);   // 暂解释不了

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐