hi3516cv610的spi0上适配tmi8150b电机ic
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); // 暂解释不了
更多推荐
所有评论(0)