"); //-->
首先把磁铁旋转到起始位置,读出当前角度值,把这个起始角度值写入到起 始位置寄存器 start_angle( 0x2B[3:0],0x2A),然后磁场旋转到终点位置,再次读出 当 前 角 度 值 , 把 这 个 起 始 角 度 值 写 入 到 终 点 位 置 寄存器 stop_angle( 0x2D[3:0],0x2C), 再编写编程指令,实现起始位置编程,零点自动会 设置在二者中间对称的位置上,如图所示 Zero 位置。
编程方式步骤:
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 步写入的相同页码并解锁 OTP, 0x11=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
寄存器列表:
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。