mirror of
https://github.com/armfly/H7-TOOL_STM32H7_App.git
synced 2024-08-09 10:05:34 +08:00
580 lines
14 KiB
Lua
Executable File
580 lines
14 KiB
Lua
Executable File
beep()
|
||
print("<EFBFBD>ű<EFBFBD><EFBFBD>汾 V1.04 2019-11-28")
|
||
|
||
local str --<2D><><EFBFBD>ڴ<EFBFBD>ӡ
|
||
|
||
--<2D><><EFBFBD><EFBFBD>2<EFBFBD>㷽<EFBFBD><E3B7BD><EFBFBD><EFBFBD>ֵ
|
||
function cacul(x1,y1,x2,y2,x)
|
||
local ff
|
||
|
||
if (x2 == x1) then
|
||
ff = 0
|
||
else
|
||
ff = y1 + ((y2 - y1) * (x - x1)) / (x2 - x1);
|
||
end
|
||
return ff
|
||
end
|
||
|
||
--<2D><><EFBFBD><EFBFBD>0-7ͨ<37><CDA8><EFBFBD>ĵ<EFBFBD>ѹ V
|
||
function ad7606_volt(ch)
|
||
local X1 = {39, 39, 39, 36, 73, 74, 73, 71}
|
||
local Y1 = {0, 0, 0, 0, 0, 0, 0, 0}
|
||
local X2 = {29417, 29362, 29520, 29396, 29407, 29407, 29407, 29407}
|
||
local Y2 = {8.999, 8.999, 8.999, 8.999, 8.999, 8.999, 8.999, 8.999}
|
||
local adc
|
||
local volt
|
||
|
||
adc = ex_adc(ch)
|
||
volt = cacul(X1[ch+1], Y1[ch+1], X2[ch+1], Y2[ch+1], adc)
|
||
return volt
|
||
end
|
||
|
||
--<2D><><EFBFBD><EFBFBD>0-7ͨ<37><CDA8><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD> mA
|
||
function ad7606_curr(ch)
|
||
local X1 = {75, 75, 74, 72, 73, 74, 73, 71}
|
||
local Y1 = {0, 0, 0, 0, 0, 0, 0, 0}
|
||
local X2 = {29417, 29362, 29520, 29396, 29407, 29812, 31786, 29017}
|
||
local Y2 = {8.999, 8.999, 8.999, 8.999, 8.999, 454.64, 19.482, 88.900}
|
||
local adc
|
||
local curr
|
||
|
||
adc = ex_adc(ch)
|
||
curr = cacul(X1[ch+1], Y1[ch+1], X2[ch+1], Y2[ch+1], adc)
|
||
return curr
|
||
end
|
||
|
||
--<2D><><EFBFBD><EFBFBD>DAC8563<36><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>λV, <20><><EFBFBD><EFBFBD>
|
||
function dac8563_volt(volt)
|
||
local X1 = 1000
|
||
local Y1 = -9.8551
|
||
local X2 = 32767
|
||
local Y2 = -0.003030
|
||
local X3 = 64000
|
||
local Y3 = 9.6802
|
||
local dac
|
||
|
||
if (volt < Y2) then
|
||
dac = cacul(Y1,X1,Y2,X2,volt)
|
||
else
|
||
dac = cacul(Y2,X2,Y3,X3,volt)
|
||
end
|
||
ex_dac(0, dac)
|
||
end
|
||
|
||
--<2D><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC<44>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ģʽ
|
||
function start_dso(void)
|
||
print("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD>ģʽ")
|
||
write_reg16(0x01FF, 2) --<2D><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>
|
||
write_reg16(0x0200, 1) -- CH1ѡDC<44><43><EFBFBD><EFBFBD>
|
||
write_reg16(0x0201, 1) -- CH2ѡDC<44><43><EFBFBD><EFBFBD>
|
||
write_reg16(0x0202, 0) -- CH1ͨ<31><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
|
||
write_reg16(0x0203, 0) -- CH2ͨ<32><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
|
||
write_reg16(0x0204, 0) -- CH1ͨ<31><CDA8>ֱ<EFBFBD><D6B1>ƫֵ<C6AB><D6B5>δ<EFBFBD><CEB4>
|
||
write_reg16(0x0205, 0) -- CH2ͨ<32><CDA8>ֱ<EFBFBD><D6B1>ƫֵ<C6AB><D6B5>δ<EFBFBD><CEB4>
|
||
write_reg16(0x0206, 12) --<2D><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>1M
|
||
write_reg16(0x0207, 0) --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1K
|
||
write_reg16(0x0208, 0) --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ
|
||
write_reg16(0x0209, 50) --<2D><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||
write_reg16(0x020A, 0) --<2D><><EFBFBD><EFBFBD>ģʽ 0=<3D>Զ<EFBFBD>
|
||
write_reg16(0x020B, 0) --<2D><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>CH1
|
||
write_reg16(0x020C, 0) --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
write_reg16(0x020D, 2) --ͨ<><CDA8>ʹ<EFBFBD><CAB9>
|
||
write_reg16(0x020E, 1) --<2D><>ʼ<EFBFBD>ɼ<EFBFBD>
|
||
end
|
||
|
||
|
||
--<2D><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7>ڹ<EFBFBD><DAB9>Χ 1<><31>ʾerr 0<><30>ʾok
|
||
function check_err(data, mid, diff)
|
||
local re
|
||
local dd
|
||
|
||
if (mid < 0) then
|
||
dd = -mid * diff
|
||
else
|
||
dd = mid * diff
|
||
end
|
||
|
||
if ((data >= mid - dd) and (data <= mid + dd)) then
|
||
re = 0
|
||
else
|
||
re = 1
|
||
end
|
||
return re
|
||
end
|
||
|
||
--<2D>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>еļ̵<C4BC><CCB5><EFBFBD>
|
||
function colse_all_y(void)
|
||
return ch
|
||
end
|
||
|
||
--<2D>ɹ<EFBFBD><C9B9><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʧ<EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD>
|
||
function disp_result(err)
|
||
if (err == 0) then
|
||
print("\n*****<2A><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>*****")
|
||
beep()
|
||
else
|
||
print("\n*****<2A><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>*****")
|
||
beep()
|
||
delayms(100)
|
||
beep()
|
||
delayms(100)
|
||
beep()
|
||
end
|
||
end
|
||
|
||
--У<D0A3><D7BC>ʼ<EFBFBD><CABC>
|
||
function calib_init(void)
|
||
write_tvcc_dac(43) --<2D><><EFBFBD><EFBFBD>TVCC<43><43><EFBFBD><EFBFBD>3.3V
|
||
delayms(100)
|
||
ex_start() --<2D><><EFBFBD>ر<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>̵<EFBFBD><CCB5><EFBFBD>
|
||
start_dso() --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ٲɼ<D9B2>ģʽ
|
||
write_reg16(0xBFFF, 1) --<2D><><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD>
|
||
end
|
||
|
||
--УTVCC<43><43><EFBFBD>õ<EFBFBD>ѹ<EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>ѹ
|
||
function calib_tvcc_volt(void)
|
||
local adc
|
||
local volt
|
||
local err
|
||
|
||
close_all()
|
||
ex_dout(20,1)
|
||
ex_dout(21,1)
|
||
|
||
err = 0
|
||
--<2D><>УTVCC<43><43><EFBFBD>õ<EFBFBD>ѹ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ѹ
|
||
print("")
|
||
print("---УTVCC---")
|
||
|
||
---<2D><>1<EFBFBD><31>
|
||
write_tvcc_dac(36) --4.4V<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
delayms(1500)
|
||
volt = ad7606_volt(0) --<2D><>ȡAD7606 TVCC<43><43>ѹ
|
||
if (check_err(volt, 4.416, 0.05)==1) then
|
||
str = string.format("SET = 36 ʵ<>ʵ<EFBFBD>ѹ = %f err", volt) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format("SET = 36 ʵ<>ʵ<EFBFBD>ѹ = %f ok", volt) print(str) delayms(5)
|
||
write_regfloat(0xC0C0, 36)
|
||
write_regfloat(0xC0C2, volt)
|
||
end
|
||
|
||
adc = read_adc(4) --<2D><>cpu adc tvcc<63><63>ѹ
|
||
if (check_err(adc, 46368, 0.1)==1) then
|
||
print("TVCC Volt ADC =", adc, "err") delayms(5)
|
||
err = err + 1
|
||
else
|
||
print("TVCC Volt ADC =", adc, "ok") delayms(5)
|
||
write_regfloat(0xC0AC, adc)
|
||
write_regfloat(0xC0AE, volt)
|
||
end
|
||
|
||
adc = read_adc(2) --<2D><>cpu adc <20>߲<EFBFBD><DFB2><EFBFBD>ѹ
|
||
if (check_err(adc, 8117, 0.1)==1) then
|
||
print("HighSide Volt ADC =", adc, "err") delayms(5)
|
||
err = err + 1
|
||
else
|
||
print("HighSide Volt ADC =", adc, "ok") delayms(5)
|
||
write_regfloat(0xC084, adc)
|
||
write_regfloat(0xC086, volt)
|
||
end
|
||
|
||
---<2D><>2<EFBFBD><32>
|
||
print("")
|
||
write_tvcc_dac(100)
|
||
delayms(1500)
|
||
volt = ad7606_volt(0) --<2D><>ȡAD7606 TVCC <20><>ѹ
|
||
if (check_err(volt, 1.59, 0.1)==1) then
|
||
str = string.format("SET = 100 ʵ<>ʵ<EFBFBD>ѹ = %f err", volt) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format("SET = 100 ʵ<>ʵ<EFBFBD>ѹ = %f ok", volt) print(str) delayms(5)
|
||
write_regfloat(0xC0C4, 100)
|
||
write_regfloat(0xC0C6, volt)
|
||
end
|
||
|
||
adc = read_adc(4) --<2D><>cpu adc tvcc<63><63>ѹ
|
||
if (check_err(adc, 16679, 0.1)==1) then
|
||
print("TVCC Volt ADC =", adc, "err") delayms(5)
|
||
err = err + 1
|
||
else
|
||
print("TVCC Volt ADC =", adc, "ok") delayms(5)
|
||
write_regfloat(0xC0A8, adc)
|
||
write_regfloat(0xC0AA, volt)
|
||
end
|
||
|
||
adc = read_adc(2) --<2D><>cpu adc <20>߲<EFBFBD><DFB2><EFBFBD>ѹ
|
||
if (check_err(adc, 2879, 0.1)==1) then
|
||
print("HighSide Volt ADC =", adc, "err") delayms(5)
|
||
err = err + 1
|
||
else
|
||
print("HighSide Volt ADC =", adc, "ok") delayms(5)
|
||
write_regfloat(0xC080, adc)
|
||
write_regfloat(0xC082, volt)
|
||
end
|
||
|
||
--<2D>ָ<EFBFBD>TVCC<43><43>ѹ3.3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
write_tvcc_dac(47)
|
||
return err
|
||
end
|
||
|
||
--УCPU<50><55>DAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD>
|
||
function calib_dac(void)
|
||
local i
|
||
local err
|
||
local volt
|
||
local curr
|
||
local dac
|
||
local dac_tab = {500, 1500, 2500, 3500}
|
||
local volt_mid = {-9.176, -3.235, 2.711, 8.661}
|
||
local curr_mid = {2.592, 7.723, 12.857, 17.992}
|
||
local volt_err = 0.1
|
||
local curr_err = 0.1
|
||
|
||
close_all()
|
||
ex_dout(0,1)
|
||
ex_dout(19,1)
|
||
|
||
err = 0
|
||
dac_on() --<2D><><EFBFBD><EFBFBD>DAC<41><43>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֱ<CEAA><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
delayms(100)
|
||
|
||
print("")
|
||
print("---УDAC<41><43>ѹ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD>---")
|
||
for i = 0, 3, 1 do
|
||
dac = dac_tab[i + 1]
|
||
dac_write(dac) --CPU DAC<41><43><EFBFBD><EFBFBD>
|
||
delayms(500)
|
||
|
||
volt = ad7606_volt(1)
|
||
if (check_err(volt, volt_mid[i + 1], volt_err) == 1) then
|
||
str = string.format("DAC<EFBFBD><EFBFBD>ѹ = %d %f err", dac, volt) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format("DAC<EFBFBD><EFBFBD>ѹ = %d %f ok", dac, volt) print(str) delayms(5)
|
||
write_reg16(0xC0C8 + i * 2, dac)
|
||
write_reg16(0xC0C9 + i * 2, volt * 1000)
|
||
end
|
||
|
||
curr = ad7606_curr(6) --20mA<6D><41><EFBFBD><EFBFBD>
|
||
if (check_err(curr, curr_mid[i + 1], curr_err) == 1) then
|
||
str = string.format("DAC<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = %d %f err", dac, curr) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format("DAC<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = %d %f ok", dac, curr) print(str) delayms(5)
|
||
write_reg16(0xC0D0 + i * 2, dac)
|
||
write_reg16(0xC0D1 + i * 2, curr * 1000)
|
||
end
|
||
end
|
||
return err
|
||
end
|
||
|
||
--Уʾ<D7BC><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
function calib_ch1ch2(void)
|
||
local i
|
||
local err
|
||
local volt
|
||
local adc
|
||
local ch_tab = {9.0, 6.0, 3.0, 1.5, 0.75, 0.375, 0.170, 0.09}
|
||
local zero_mid = {32768, 32768, 32768, 32768, 32768, 32768, 32768, 32768}
|
||
local full_mid = {53641, 60506, 60629, 60686, 60857, 60915, 58393, 60166}
|
||
local adc_err1 = 0.22
|
||
local adc_err2 = 0.12
|
||
|
||
close_all()
|
||
ex_dout(4,1)
|
||
|
||
print("")
|
||
print("---Уʾ<D7BC><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ---") delayms(5)
|
||
err = 0
|
||
print("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>λ") delayms(5)
|
||
for i = 0, 7, 1 do
|
||
write_reg16(0x0202, i) -- CH1ͨ<31><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
|
||
write_reg16(0x0203, i) -- CH2ͨ<32><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
|
||
|
||
if (i == 0) then
|
||
delayms(1200)
|
||
else
|
||
delayms(1200)
|
||
end
|
||
adc = read_adc(0)
|
||
if (check_err(adc, zero_mid[i + 1], adc_err1)==1) then
|
||
str = string.format(" CH1 %d adc = %f err", i, adc)
|
||
print(str)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" CH1 %d adc = %f ok", i, adc) print(str) delayms(5)
|
||
|
||
write_regfloat(0xC000 + 8 * i, adc)
|
||
write_regfloat(0xC002 + 8 * i, 0)
|
||
end
|
||
|
||
adc = read_adc(1)
|
||
if (check_err(adc, zero_mid[i + 1], adc_err1)==1) then
|
||
str = string.format(" CH2 %d adc = %f err", i, adc) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" CH2 %d adc = %f ok", i, adc) print(str) delayms(5)
|
||
write_regfloat(0xC040 + 8 * i, adc)
|
||
write_regfloat(0xC042 + 8 * i, 0)
|
||
end
|
||
end
|
||
|
||
if (err > 0) then
|
||
goto quit
|
||
end
|
||
|
||
close_all()
|
||
ex_dout(12,1)
|
||
ex_dout(13,1)
|
||
ex_dout(14,1)
|
||
delayms(1000)
|
||
|
||
print("У<EFBFBD><EFBFBD>λ")
|
||
for i = 0, 7, 1 do
|
||
write_reg16(0x0202, i) -- CH1ͨ<31><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
|
||
write_reg16(0x0203, i) -- CH2ͨ<32><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
|
||
|
||
dac8563_volt(ch_tab[i + 1])
|
||
|
||
delayms(1000)
|
||
adc = read_adc(0)
|
||
volt = ad7606_volt(1)
|
||
if (check_err(adc, full_mid[i + 1], adc_err2)==1) then
|
||
str = string.format(" CH1 %d volt = %f adc = %f err", i, volt, adc) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" CH1 %d volt = %f adc = %f ok", i, volt, adc) print(str) delayms(5)
|
||
write_regfloat(0xC004 + 8 * i, adc)
|
||
write_regfloat(0xC006 + 8 * i, volt)
|
||
end
|
||
|
||
adc = read_adc(1)
|
||
volt = ad7606_volt(1)
|
||
if (check_err(adc, full_mid[i + 1], adc_err2)==1) then
|
||
str = string.format(" CH2 %d volt = %f adc = %f err", i, volt, adc) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" CH2 %d volt = %f adc = %f ok", i, volt, adc) print(str) delayms(5)
|
||
write_regfloat(0xC044 + 8 * i, adc)
|
||
write_regfloat(0xC046 + 8 * i, volt)
|
||
end
|
||
end
|
||
|
||
::quit::
|
||
return err
|
||
end
|
||
|
||
--Уtvcc<63><63><EFBFBD><EFBFBD><EFBFBD>߲<CDB8><DFB2><EFBFBD><EFBFBD><EFBFBD>
|
||
function calib_curr(void)
|
||
local i
|
||
local err
|
||
local curr
|
||
local adc
|
||
local set_tabe1 = {0, 0.15 * 10, 0.3*10, 0.4*10}
|
||
local high_mid1 = {160, 7700, 15330, 20296}
|
||
local tvcc_mid = {477, 21458, 42877, 56882}
|
||
local adc_err1 = {0.6,0.1,0.1,0.1}
|
||
|
||
local set_tabe2 = {0, 0.03 * 50, 0.05*50, 0.09 * 50}
|
||
local high_mid2 = {1300, 16421, 26873, 48841}
|
||
local adc_err2 = {0.9,0.1,0.1,0.1}
|
||
local volt
|
||
|
||
print("")
|
||
print("---УTVCC<43><43><EFBFBD><EFBFBD><EFBFBD>߲<CDB8><DFB2><EFBFBD><EFBFBD><EFBFBD>---")
|
||
err = 0
|
||
|
||
close_all()
|
||
ex_dout(20,1)
|
||
ex_dout(21,1)
|
||
|
||
--TVCC<43><43><EFBFBD><EFBFBD><EFBFBD>߲<CDB8><DFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ȳ<EFBFBD>1.2A<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
print("---1.2A---") delayms(5)
|
||
write_reg16(0x0211, 1) --1.2A<EFBFBD><EFBFBD><EFBFBD><EFBFBD> HIGH_SIDE
|
||
for i = 0, 3, 1 do
|
||
volt = set_tabe1[i+1]
|
||
str = string.format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ = %fV", volt) print(str) delayms(5)
|
||
if (volt == 0) then
|
||
ex_dout(20,0)
|
||
ex_dout(21,0)
|
||
|
||
ex_dout(22,0)
|
||
ex_dout(23,0)
|
||
set_tvcc(5) --<2D><><EFBFBD><EFBFBD>TVCC<43><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ5v У0λ
|
||
delayms(1000)
|
||
else
|
||
ex_dout(20,1)
|
||
ex_dout(21,1)
|
||
|
||
set_tvcc(volt) --<2D><><EFBFBD><EFBFBD>TVCC<43><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ϊ10ŷ
|
||
ex_dout(23,0)
|
||
ex_dout(22,1) --ѡ<><D1A1>10ŷ<30><C5B7><EFBFBD><EFBFBD>
|
||
end
|
||
|
||
delayms(1000)
|
||
|
||
if (volt == 0) then
|
||
curr = 0
|
||
else
|
||
curr = ad7606_curr(5) --10ŷ<30><C5B7><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end
|
||
|
||
adc = read_adc(3) --3=<3D>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD>cpu ADC
|
||
if (check_err(adc, high_mid1[i + 1], adc_err1[i + 1])==1) then
|
||
str = string.format(" <20>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD> = %fmA adc = %f err", curr, adc) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" <20>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD> = %fmA adc = %f ok", curr, adc) print(str) delayms(5)
|
||
write_regfloat(0xC098 + 4 * i, adc)
|
||
write_regfloat(0xC09A + 4 * i, curr)
|
||
end
|
||
|
||
adc = read_adc(5) --5=tvcc<63><63><EFBFBD><EFBFBD>
|
||
if (check_err(adc, tvcc_mid[i + 1], adc_err1[i + 1])==1) then
|
||
str = string.format(" TVCC<43><43><EFBFBD><EFBFBD> = %fmA adc = %f err", curr, adc) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" TVCC<43><43><EFBFBD><EFBFBD> = %fmA adc = %f ok", curr, adc) print(str) delayms(5)
|
||
write_regfloat(0xC0B0 + 4 * i, adc)
|
||
write_regfloat(0xC0B2 + 4 * i, curr)
|
||
end
|
||
end
|
||
|
||
--<2D>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD>100<30><30><EFBFBD><EFBFBD>
|
||
print("")
|
||
print("---120mA---") delayms(5)
|
||
write_reg16(0x0211, 0) --120mA<6D><41><EFBFBD><EFBFBD> HIGH_SIDE
|
||
for i = 0, 3, 1 do
|
||
volt = set_tabe2[i+1]
|
||
str = string.format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ = %fV", volt) print(str) delayms(5)
|
||
if (volt == 0) then
|
||
ex_dout(22,0)
|
||
ex_dout(23,0)
|
||
else
|
||
set_tvcc(volt) --<2D><><EFBFBD><EFBFBD>TVCC<43><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ϊ10ŷ
|
||
ex_dout(22,0)
|
||
ex_dout(23,1)--ѡ<><D1A1>50ŷ<30><C5B7><EFBFBD><EFBFBD>
|
||
end
|
||
|
||
delayms(1000)
|
||
|
||
if (volt == 0) then
|
||
curr = 0
|
||
else
|
||
curr = ad7606_curr(7) --50ŷ<30><C5B7><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end
|
||
|
||
adc = read_adc(3) --3=<3D>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD>cpu ADC
|
||
if (check_err(adc, high_mid2[i + 1], adc_err2[i + 1])==1) then
|
||
str = string.format(" <20>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD> = %fmA adc = %f err", curr, adc) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" <20>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD> = %fmA adc = %f ok", curr, adc) print(str) delayms(5)
|
||
write_regfloat(0xC088 + 4 * i, adc)
|
||
write_regfloat(0xC08A + 4 * i, curr)
|
||
end
|
||
end
|
||
|
||
return err
|
||
end
|
||
|
||
--УNTC
|
||
function calib_ntc(void)
|
||
local i
|
||
local err
|
||
local adc
|
||
local ref = {0.0003, 0.0222, 9.9732, 99.958}
|
||
local Y = {5,6,16,17}
|
||
local adc_mid = {105, 283, 43376, 62376}
|
||
local adc_err = {0.6, 0.7, 0.1, 0.1}
|
||
|
||
print("")
|
||
print("---УNTC---")
|
||
err = 0
|
||
|
||
for i=0,3,1 do
|
||
close_all()
|
||
ex_dout(Y[i+1],1)
|
||
delayms(1000)
|
||
adc = read_adc(6) --6=NTC adc
|
||
if (check_err(adc, adc_mid[i+1], adc_err[i+1])==1) then
|
||
str = string.format(" <20><><EFBFBD><EFBFBD> = %fŷ adc = %f err", ref[i+1], adc) print(str) delayms(5)
|
||
err = err + 1
|
||
else
|
||
str = string.format(" <20><><EFBFBD><EFBFBD> = %fŷ adc = %f ok", ref[i+1], adc) print(str) delayms(5)
|
||
write_regfloat(0xC0D8+4*i, adc)
|
||
write_regfloat(0xC0DA+4*i, ref[i+1])
|
||
end
|
||
end
|
||
return err
|
||
end
|
||
|
||
--<2D>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>еļ̵<C4BC><CCB5><EFBFBD>
|
||
function close_all(void)
|
||
local i
|
||
|
||
for i=0,23,1 do
|
||
ex_dout(i, 0)
|
||
end
|
||
end
|
||
|
||
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
function test_calib(void)
|
||
local err
|
||
local time1
|
||
local time2
|
||
|
||
time1 = get_runtime()
|
||
|
||
print("\r\n----<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>----")
|
||
time2 = os.time()
|
||
print(os.date())
|
||
print(time2)
|
||
if (time2 < 1574937149) then
|
||
print("*****ʱ<>Ӵ<EFBFBD><D3B4><EFBFBD>*****")
|
||
goto quit
|
||
else
|
||
print("ʱ<EFBFBD><EFBFBD>OK > 1574937149")
|
||
end
|
||
|
||
err = 0
|
||
|
||
err = err + calib_tvcc_volt() --УTVCC<43><43>ѹ
|
||
if (err > 0) then
|
||
goto quit
|
||
end
|
||
|
||
err = err + calib_dac() --УDAC
|
||
if (err > 0) then
|
||
goto quit
|
||
end
|
||
|
||
err = err + calib_ch1ch2() --Уʾ<D7BC><CABE><EFBFBD><EFBFBD>
|
||
if (err > 0) then
|
||
goto quit
|
||
end
|
||
|
||
err = err + calib_curr() --УTVCC<43><43><EFBFBD><EFBFBD><EFBFBD>߲<CDB8><DFB2><EFBFBD><EFBFBD><EFBFBD>
|
||
if (err > 0) then
|
||
goto quit
|
||
end
|
||
|
||
err = err + calib_ntc() --Уntc
|
||
if (err > 0) then
|
||
goto quit
|
||
end
|
||
|
||
save_param() --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>eeprom
|
||
|
||
::quit::
|
||
disp_result(err) delayms(5)
|
||
|
||
close_all()
|
||
|
||
time2 = get_runtime()
|
||
str = string.format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> : %f <20><>",(time2 - time1) / 1000) print(str) delayms(5)
|
||
end
|
||
|
||
calib_init()
|
||
|