免費試用網(wǎng)站空間成都十大營銷策劃公司
LUA腳本的好處是用戶可以根據(jù)自己注冊的一批API(當前TOOL已經(jīng)提供了幾百個函數(shù)供大家使用),實現(xiàn)各種小程序,不再限制Flash里面已經(jīng)下載的程序,就跟手機安裝APP差不多,所以在H7-TOOL里面被廣泛使用,支持在線調(diào)試運行,支持離線運行。TOOL的LUA教程爭取做到大家可以無痛調(diào)用各種功能函數(shù),不需要學習成本。
簡介
電壓,電流,NTC熱敏電阻以及4-20mA輸入,可以在上位機端設(shè)置,也可以顯示屏端設(shè)置
詳細使用說明可以看在線或者離線操作說明手冊:H7-TOOL操作說明和客戶常見問題匯總貼,含PDF離線版(2024-08-16) - H7-TOOL開發(fā)工具 - 硬漢嵌入式論壇 - Powered by Discuz!
建議優(yōu)先熟悉下,特別是這幾個功能對應(yīng)使用的引腳。
LUA函數(shù)說明:
1、啟動模擬量采集。
啟動模擬量采集僅需用到兩個大類配置,一個負載電流測量,還有一個低速多通道。
所以啟動模擬信號采集封裝了兩種配置
(1)負載電流測量,配置代碼固定如下:
function start_dso(void)write_reg16(0x01FF, 1) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動end
(2)低速多通道測量,配置代碼固定如下:
--啟動模擬量電路
function start_dso(void)write_reg16(0x01FF, 2) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動end
2、測量函數(shù),讀取模擬值
測量函數(shù)比較簡單,周期調(diào)用即可,建議100ms以上讀取一次,因為所有數(shù)據(jù)100ms更新一輪
read_analog(9) --9 - 讀取4-20mA
(1)電壓讀取
read_analog(0) -- 0 - CH1電壓
read_analog(1) -- 1 - CH2電壓
舉例:每500ms讀取一次CH1和CH2通道電壓
實現(xiàn)代碼如下:
--啟動模擬量電路
function start_dso(void)write_reg16(0x01FF, 2) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動endprint("啟動電壓測量")
start_dso() -- 調(diào)用一次初始化for i = 1, 10, 1 do -- 讀取10次
data1 = read_analog(0) -- 0 - CH1電壓
data2 = read_analog(1) -- 1 - CH2電壓
print(string.format("CH1電壓:%f,CH2電壓:%f", data1,data2))
delayms(500)
end
實際效果:
(2)高側(cè)負載測量
read_analog(2) --2 - 高側(cè)負載電壓
read_analog(3) --3 - 高端負載電流
舉例:每500ms讀取一次
實現(xiàn)代碼如下
--啟動模擬量電路
function start_dso(void)write_reg16(0x01FF, 1) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動endprint("啟動高側(cè)測量")
start_dso() -- 調(diào)用一次初始化for i = 1, 10, 1 do -- 讀取10次
data1 = read_analog(2) --2 - 高側(cè)負載電壓
data2 = read_analog(3) --3 - 高端負載電流
print(string.format("負載電壓:%f,負載電流:%f", data1,data2))
delayms(500)
end
實際效果:
(3)TVCC測量
read_analog(4) --4 - TVCC電壓
read_analog(5) --5 - TVCC電流
舉例:每500ms讀取一次
實現(xiàn)代碼如下:
--啟動模擬量電路
function start_dso(void)write_reg16(0x01FF, 2) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動endprint("啟動TVCC測量")
start_dso() -- 調(diào)用一次初始化for i = 1, 10, 1 do -- 讀取10次
data1 = read_analog(4) --4 - TVCC電壓
data2 = read_analog(5) --5 - TVCC電流
print(string.format("TVCC電壓:%f,TVCC電流:%f", data1,data2))
delayms(500)
end
(4)NTC熱敏電阻測量
read_analog(6) --6 - NTC熱敏電阻阻值
舉例:每500ms讀取一次
--啟動模擬量電路
function start_dso(void)write_reg16(0x01FF, 2) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動endprint("啟動NTC熱敏電阻測量")
start_dso() -- 調(diào)用一次初始化for i = 1, 10, 1 do -- 讀取10次
data1 = read_analog(6) --6 - NTC熱敏電阻阻值
print(string.format("NTC熱敏電阻:%f", data1))
delayms(500)
end
(5)供電電壓測量
read_adc(7) --7 - 外部供電電壓
read_analog(8) --8 - USB供電電壓
舉例:每500ms讀取一次
--啟動模擬量電路
function start_dso(void)write_reg16(0x01FF, 2) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動endprint("啟動供電電壓測量")
start_dso() -- 調(diào)用一次初始化for i = 1, 10, 1 do -- 讀取10次
data1 = read_adc(7) --7 - 外部供電電壓
data2 = read_analog(8) --8 - USB供電電壓
print(string.format("外部供電電壓:%f, USB供電電壓:%f", data1, data2))
delayms(500)
end
(6)4-20mA測量
read_analog(9) -- 4-20mA測量
舉例:每500ms讀取一次
--啟動模擬量電路
function start_dso(void)write_reg16(0x01FF, 2) -- 測量模式 0:示波器 1:負載電流 2:多路低速掃描write_reg16(0x0200, 1) -- CH1耦合,0:AC 1:DCwrite_reg16(0x0201, 1) -- CH2耦合,0:AC 1:DC--量程取值 0:±13.8V 1:±6.4V 2:±3.2V 3:±1.6V 4:±800mV 5:±400mV 6:±200mV 7:±100mVwrite_reg16(0x0202, 0) -- CH1量程write_reg16(0x0203, 0) -- CH2量程write_reg16(0x0204, 0) -- CH1通道直流偏值,未用write_reg16(0x0205, 0) -- CH2通道直流偏值,未用write_reg16(0x0206, 12) --采樣頻率 0:100 1:200 2:500 3:1K 4:2K 5:5K 6:10K 7:20K--8:50K 9:100K 10:200K 11:500K 12:1M 13:2M 14:5Mwrite_reg16(0x0207, 0) --采樣深度 0:1K 1:2K 3:4K 4:8K 5:16K 6:32Kwrite_reg16(0x0208, 32768) --觸發(fā)電平ADC 0-65535write_reg16(0x0209, 50) --觸發(fā)位置百分比 0-100write_reg16(0x020A, 0) --觸發(fā)模式 0:自動 1:普通 2:單次write_reg16(0x020B, 0) --觸發(fā)通道 0:CH1 1:CH2write_reg16(0x020C, 0) --觸發(fā)邊沿 0:下降沿 1:上升沿 write_reg16(0x020D, 0x03) --通道使能控制 bit0 = CH1 bit1 = CH2write_reg16(0x020E, 1) --采集控制 0:停止 1:啟動endprint("啟動4-20mA測量")
start_dso() -- 調(diào)用一次初始化for i = 1, 10, 1 do -- 讀取10次
data1 = read_analog(9) -- 4-20mA測量
print(string.format("4-20mA讀取:%f", data1, data2))
delayms(500)
end
測量的10mA,精度還是非常不錯的
3、測量函數(shù),直接讀取ADC值
這個用法和第2步讀取模擬值是完全一樣的。只是這里獲取的是ADC支持。
read_adc(0) --0 - CH1電壓
read_adc(1) --1 - CH2電壓
read_adc(2) --2 - 高側(cè)負載電壓
read_adc(3) --3 - 高端負載電流
read_adc(4) --4 - TVCC電壓
read_adc(5) --5 - TVCC電流
read_adc(6) --6 - NTC熱敏電阻阻值
read_adc(7) --7 - 外部供電電壓
read_adc(8) --8 - USB供電電壓
read_adc(9) -- 9 - 4-20mA輸入
?