|
这个功能还是非常有意义的,大大方便了多路高精度数据采集监测。特别是搭建三代示波器模拟前端的洞洞板模拟电路,可以方便的采集多个节点位置。从实战应用中来提出问题,再到实战应用中去解决问题,这大概就是工具的真正价值所在。
需要深入了解ADS1256可以看教程第93章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980
1、ADS1256接线说明:
ADS1256模块 H7-TOOL (TVCC输出3.3V)
+5V <------ 5.0V 5V供电
GND ------- GND 地
CS <------ D0 SPI_CS PI0
DRDY ------> D1 准备就绪 (用到外部中断) PH10 --所有的IO电平固定是3.3V
DIN <------ D2 SPI_MOSI PE6
DOUT ------> D3 SPI_MISO PE5
SCLK <------ D5 SPI时钟 PE2
GND ------- GND 地
PDWN (模块有上拉,可不接线)
RST (模块有上拉,可不接线)
NC 空脚
NC 空脚
2、ADS1256测试代码
使用比较简单,注释很详细,使用也比较简单。
local gain = 0 -- 增益 (0=X1, 1=X2, 2=X4, 3=X8, 4=X16, 5=X32, 6=X64)
local drate = 7 --数据率 (0=30000,1=15000,2=7500,3=3750,4=2000,5=1000,6=500,7=100, 8=60, 9=50, 10=30, 11=25, 12=15, 13=10, 14=5, 15=2.5sps)
local buffen = 1 -- 1表示使能输入buffer使能,0表示禁止
local diffmode = 0 -- 0表示单端模式,1表示差分模式
local scantable = "01234567" --扫描次序, 可只扫描需要的通道
m_init("ADS1256", gain, drate, buffen, diffmode, scantable) -- 挂载ADS1256
delayms(500)
for j=1, 8, 1 do -- 循环执行了8次
adc = {m_read("ADS1256")} -- 读取数据
adc[1] = adc[1]*2.5/4194303 -- 8通道的数据全部读取,直接计算实际电压值。
adc[2] = adc[2]*2.5/4194303
adc[3] = adc[3]*2.5/4194303
adc[4] = adc[4]*2.5/4194303
adc[5] = adc[5]*2.5/4194303
adc[6] = adc[6]*2.5/4194303
adc[7] = adc[7]*2.5/4194303
adc[8] = adc[8]*2.5/4194303
s = string.format("%f", adc[1]) --打印1个通达,多个通道同理,类似C的printf
print(s) -- 打印数值
print_wave(s) -- 打印波形效果
delayms(100) -- 100ms刷新1次
end
m_uninit("ADS1256") -- 卸载ADS1256
将代码贴到Lua小程序窗口里面执行即可:
视频执行效果:
|
|