新闻  |   论坛  |   博客  |   在线研讨会
SD3012和SD2315起始位置设置编程解析
磁传感器 | 2024-08-07 11:21:00    阅读:34   发布文章

 首先把磁铁旋转到起始位置,读出当前角度值,把这个起始角度值写入到起 始位置寄存器 start_angle( 0x2B[3:0],0x2A),然后磁场旋转到终点位置,再次读出 当 前 角 度 值 , 把 这 个 起 始 角 度 值 写 入 到 终 点 位 置 寄存器 stop_angle( 0x2D[3:0],0x2C), 再编写编程指令,实现起始位置编程,零点自动会 设置在二者中间对称的位置上,如图所示 Zero 位置。

1723000157169.jpg

编程方式步骤:  

1, Pin2( HVPP) 7V 电压 

2,磁场至于起点位,并从寄存器 0x01,0x02 中读出当前芯片的角度值, 01 02 的高 6 位组成 14 位角度值:angle_data[13:0] ={0x01[7:0],0x02[7:2]} 

3,把第 2 步得到 angle_data 的高 12 位写入到起点寄存器中: start_angle={ 0x2B[3:0], 0x2A} = angle_data[13:2] 

4,磁场至于终点位,并从寄存器 0x01,0x02 中读出当前芯片的角度值, 01 02 的高 6 位组成 14 位角度值:angle_data[13:0] ={0x01[7:0],0x02[7:2]} 

5,把第 4 步得到 angle_data 的高 12 位写入到终点寄存器中: stop_angle={ 0x2D[3:0], 0x2C} = angle_data[13:2] 

6, 解锁 OTP, 写寄存器 0x20 B3 

7, 写入 OTP 的页码,零点位置从第 4 页到第 7 页,(先从第 4 页开始用,顺序用 到第 7 页,每次编程只用一页,不可重复使用) 如为 page4: 0x11=0001 0000b 如为 page5: 0x11=0010 0000b 如为 page5: 0x11=0100 0000b 如为 page7: 0x11=1000 0000b

8, 写入 OTP 的编程指令 0x10=8’h02 

9,再次写入第 7 步写入的相同页码并解锁 OTP0x11=XX, 0x20=8’hB3 

10,页码值编程指令,写入 OTP 的页码编程指令 0x10=8’h12 参考代码流程(寄存器地址和数值均为 16 进制): 下面举例起始位置值编程,假设已经编程过一次,第 4 页已经用过,现在编 入到第五页 OTP , Read reg 01 /02{0x01,0x02} ## 读出当前角度值 ang_data = {0x01, 0x02<7:4>}   地址 写入值 磁铁旋转到起点, 并读取 angle_data reg_set_1 = 2A ang_data[7:0] ## 写入当前的角度值到起点寄存器低 8 reg_set_2 = 2B ang_data[11:8] ## 写入当前的角度值到零位寄存器高 4 磁铁旋转到终点,并读取 angle_data reg_set_3 = 2C ang_data[7:0] ## 写入当前的角度值到终点寄存器低 8 reg_set_4 = 2D ang_data[11:8] ## 写入当前的角度值到终点寄存器高 4 reg_set_5 = 20 b3 ## 打开 OTP reg_set_6 = 11 20 ## 写入页码 page5 reg_set_7 = 10 02 ## OTP 编程指令 wait 300ms reg_set_8 = 20 b3 ## 打开 OTP reg_set_9 = 11 20 ## 写入页码 page5 reg_set_10 = 10 12 ## OTP 编程指令编写页码(page0) reg_set_11 = 20 00 ## 锁上 OTP

寄存器列表:

image.png

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客