H7-TOOL_STM32H7_App/Doc/Lua脚本/H7_自动校准.lua

580 lines
14 KiB
Lua
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()