ADS1198ADS1298開發(fā)設(shè)計(jì)心得與遺留問題總結(jié)
《ADS1198ADS1298開發(fā)設(shè)計(jì)心得與遺留問題總結(jié)》由會(huì)員分享,可在線閱讀,更多相關(guān)《ADS1198ADS1298開發(fā)設(shè)計(jì)心得與遺留問題總結(jié)(9頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 ADS1198/ADS1298開發(fā)設(shè)計(jì)心得與遺留問題總結(jié) 首先非常感謝TI公司的支持,自己手里面的6片ADS1198全部是從TI公司申請(qǐng)到的,并且遇到問題后能TI的技術(shù)支持工程師能及時(shí)給出解答,所以寫這篇文章,一是對(duì)自己這幾個(gè)月工作的總結(jié),二是也算是對(duì)TI公司的感謝,也希望能幫助到以后使用ADS1198/1298的朋友。 本人使用MSP430F5418與ADS1198設(shè)計(jì)12導(dǎo)心電監(jiān)測(cè)儀,其實(shí)就是個(gè)低檔的HOLTER,在HOLTER的基礎(chǔ)上加了幾個(gè)操作按鍵和LCD顯示屏。歷時(shí)3個(gè)多月,前幾天算是能比較滿意的用ADS1198
2、采集到ECG信號(hào)了!現(xiàn)在簡(jiǎn)單說(shuō)下開發(fā)過程以及遇到的一些問題。 先說(shuō)下MSP430單片機(jī),本人01年開始使用(那是還是大四),先后使用過1100,135,149,2418等型號(hào),這次選用了5418,因?yàn)樾艃r(jià)比高,等開始實(shí)際調(diào)試使用時(shí),才發(fā)現(xiàn)5418與之前的型號(hào)有很多升級(jí)。增加了幾個(gè)功能模塊同時(shí)也整合了一些功能模塊。比如SYS模塊,PMM模塊,UCS模塊等(還有一些功能由于沒用上也沒研究),這幾個(gè)模塊我看了很長(zhǎng)時(shí)間英文資料(英文水平不咋地)后,發(fā)現(xiàn)SYS和PMM模塊對(duì)我根本就沒有用,并且把PMM模塊關(guān)掉了,增加了這些模塊視乎能提高430的安全性,但我覺得430這種單片機(jī)由于設(shè)計(jì)宗旨是低功耗3V供
3、電。所以一般都是采用電池供電的,加上這2個(gè)模塊似乎意義不大。反而與之前的型號(hào)兼容性不好了! 本人在做這款12導(dǎo)心電監(jiān)測(cè)儀之前搞過1年多心電,只用運(yùn)放做過9導(dǎo)心電監(jiān)測(cè)儀,所以在ECG方面的經(jīng)驗(yàn)還是很少的,發(fā)現(xiàn)這款A(yù)DS1198芯片還是在電源網(wǎng)上看到的,申請(qǐng)到樣片后,手冊(cè)和開發(fā)指南看了不下七八遍才基本理解明白,現(xiàn)在說(shuō)說(shuō)自己曾經(jīng)迷糊而后來(lái)解決以及仍沒解決的問題列出來(lái): 1. ADS1198有16位AD,可是PGA增益最大只有12,沒有二級(jí)放大,對(duì)于ECG信號(hào)最大幅值在5mV左右,經(jīng)過12倍放大為60MV, 60/2400*65536=1638,即只要用12位就能標(biāo)示出ECG信號(hào)了,也就是說(shuō)浪費(fèi)掉
4、了4位AD,如果用ADS1298也會(huì)同樣出現(xiàn)這種情況,只是會(huì)比1198精確些而已,如果用ADS1198/1298測(cè)量EEG信號(hào),EEG信號(hào)是uV級(jí)的,真不能能不能用?。? 2. 請(qǐng)看手冊(cè)第12頁(yè),這里的這幅圖下面的NOTE寫著SPI CPOL=0,CPHA=1,但是實(shí)際在調(diào)試程序時(shí)我發(fā)現(xiàn)這里應(yīng)該設(shè)置為CKPH=0,CKPL=0. 3. 手冊(cè)20頁(yè)的公共點(diǎn)參考電壓的公式似乎也由點(diǎn)問題,這里是AVDD-0.2V我覺得不對(duì),應(yīng)該是VREF+,因?yàn)槿绻匆陨瞎接?jì)算出的公共參考電壓,有可能最大幅值超過VREF+,也就是AD不能正確的采集出實(shí)際數(shù)值。 4. 手冊(cè)第19頁(yè)中設(shè)置CHNSET[2:
5、0]=011時(shí),1,2,5,6,7,8是用來(lái)測(cè)量AVDD/2,而3,4是用來(lái)測(cè)量DVDD/2,我設(shè)計(jì)的電路板是AVDD與DVDD電壓相同,通過磁珠連接,結(jié)果測(cè)試出來(lái)的數(shù)據(jù)1,2,5,6,7,8 比我計(jì)算的理論數(shù)據(jù)差了10000多,而3.4比理論數(shù)據(jù)差了1000多,這兩組之間也差了10000多,這個(gè)問題我現(xiàn)在也沒搞明白,請(qǐng)TI的工程師和使用過的朋友解答一下吧。 5. 當(dāng)我用心電模擬儀輸入信號(hào)時(shí),(我的設(shè)計(jì)中1,2,3,4,5,6,7,8分別對(duì)應(yīng)II,III,V1,V2,V3,V4,V5,V6),發(fā)現(xiàn)但我設(shè)置8個(gè)通道檢測(cè)導(dǎo)聯(lián)脫落時(shí)(即設(shè)置LOFF_SENSP=0XFF, LOFF_SENSN=0
6、XFF),II,III的基線與V1,V2,V3,V4,V5,V6相差10000多,如果設(shè)置LOFF_SENSP=0X00, LOFF_SENSN=0X00時(shí),即不檢測(cè)導(dǎo)聯(lián)脫落時(shí),II,III,V1,-V6就在同一基線上了。這個(gè)也沒搞明白。有待朋友們解答。 6. 當(dāng)心電模擬儀測(cè)試信號(hào)好用后,我實(shí)測(cè)人體信號(hào),發(fā)現(xiàn)各路信號(hào)基線都不一致,我調(diào)試了半個(gè)月也沒調(diào)出來(lái),(我的設(shè)計(jì)基本上是抄TI的設(shè)計(jì)指南里的原理圖的,我也明白為什么TI設(shè)計(jì)指南里為什么沒有給出實(shí)測(cè)人體信號(hào)!,估計(jì)它的板子也一樣有這個(gè)問題),后來(lái)請(qǐng)教TI的技術(shù)支持工程師JHL老師,他說(shuō)要加高通濾波器,后來(lái)我在輸入進(jìn)ADS1198前加了各種高通
7、濾波器,發(fā)現(xiàn)最實(shí)用的竟然是用0.1UF加10M電阻,這樣這8路信號(hào)基本上在一條直線上了,(V1偏差大一點(diǎn)與其他的基線差100左右),但加了電阻電容濾波后,用心電模擬儀再測(cè)量時(shí),原本一致的基線現(xiàn)在反而有偏差了,我是搞糊涂了!另外今天剛看到JHL老師的回復(fù),說(shuō)他說(shuō)的加高通濾波實(shí)際上是軟件濾波,如果是這樣的話,看來(lái)我用430就不行了,應(yīng)該改DSP做FFT變換吧! 總結(jié)一下,ADS1198/1298的確集成了很多ECG電路,比如8路儀表放大,威爾遜網(wǎng)絡(luò),內(nèi)部測(cè)試信號(hào),導(dǎo)聯(lián)脫落檢測(cè)(我用著不好使,呵呵)等等,而且也降低了功耗,節(jié)省了成本。是做便攜式設(shè)備很好的選擇,但問題也很大,內(nèi)部只有前級(jí)放大,沒
8、有加二級(jí)放大,同時(shí)由于集成度太高,儀表放大后直接進(jìn)AD,不能加高通,低通,以及抗肌電干擾等電路。這些工作恐怕全部要留給上位機(jī)用軟件來(lái)解決,至于能解決到什么程度,我就不知道了! 以上就是個(gè)人使用ADS1198/1298的一些心得,能解決的問題以及遺留的問題,由于本人能力有限,估計(jì)會(huì)有很多錯(cuò)誤和誤解。以上所寫,僅供大家參考,謝謝! 作者:liangzuolin 一下附上我用430開發(fā)
9、的程序,已經(jīng)調(diào)試通過,僅供參考! #define ADS1198_CS0 P3OUT &= ~BIT0 #define ADS1198_CS1 P3OUT |= BIT0 #define ADS1198_START0 P2OUT &= ~BIT5 #define ADS1198_START1 P2OUT |= BIT5 #define ADS1198_RST0 P2OUT &= ~BIT6 #define ADS1198_RST1 P2OU
10、T |= BIT6 #define ADS1198_PWDN0 P2OUT &= ~BIT4 #define ADS1198_PWDN1 P2OUT |= BIT4 #define ADS1198_READY (P2IN&0x40) #define RDATAC 0x10 #define SDATAC 0x11 #define FALSE 0 #define TRUE
11、 1 #define Addr_ID 0x00 #define Addr_CONFIG1 0x01 #define Addr_CONFIG2 0x02 #define Addr_CONFIG3 0x03 #define Addr_LOFF 0x04 #define Addr_CH1SET 0x05 #define Addr_CH2SET 0x06 #define Addr_CH3SET
12、 0x07 #define Addr_CH4SET 0x08 #define Addr_CH5SET 0x09 #define Addr_CH6SET 0x0A #define Addr_CH7SET 0x0B #define Addr_CH8SET 0x0C #define Addr_RLD_SENSP 0x0D #define Addr_RLD_SENSN 0x0E #define
13、Addr_LOFF_SENSP 0x0F #define Addr_LOFF_SENSN 0x10 #define Addr_LOFF_FLIP 0x11 #define Addr_LOFF_STATP 0x12 #define Addr_LOFF_STATN 0x13 #define Addr_GPIO 0x14 #define Addr_PACE 0x15 #define Addr_CONFIG4 0x1
14、7 #define Addr_WCT1 0x18 #define Addr_WCT2 0x19 //------------------------------------------------------------------------- // ADS1198 spi 接口初始化 //------------------------------------------------------------------------- void ADS1198_Spi_Init(void)
15、 { P3SEL |= 0x0E; // P3.1,P3.2,P3.3復(fù)用功能 UCB0CTL1 |= UCSWRST; // Put state machine in reset UCB0CTL0 |= UCMST+UCSYNC+UCMSB; // 3-pin, 8-bit SPI Master,MSB first,Mode 0(ucckpl=0,ucckph=1)
16、 UCB0CTL1 |= UCSSEL_2; // SMCLK UCB0BR0 = 0x04; // /4 UCB0BR1 = 0; // UCB0CTL1 &= ~UCSWRST; // 開啟SPI } //---------------------------
17、---------------------------------------------- // 發(fā)送ADS1198單字節(jié)命令 //------------------------------------------------------------------------- void ADS1198_Send_CMD_One(uchar cmd) { while (!(UCB0IFG&UCTXIFG)); // USCI_B0 TX buffer ready? UCB0TXBU
18、F = cmd; // Transmit data } //------------------------------------------------------------------------- // 傳輸ADS1198多字節(jié)命令 //------------------------------------------------------------------------- void ADS1198_Send_CMD_Muti(uchar cmd,uchar le
19、n,uchar dat[])
{
uchar i;
ADS1198_Send_CMD_One(cmd); // 發(fā)送第一字節(jié)命令+地址
ADS1198_Send_CMD_One(len-1); // 發(fā)送第二字節(jié)命令,發(fā)送數(shù)據(jù)長(zhǎng)度
for(i=0;i 20、}
//-------------------------------------------------------------------------
// 接收ADS1198多字節(jié)命令
//-------------------------------------------------------------------------
uchar ADS1198_Recive_Data(uchar cmd,uchar len,uchar dat[])
{
uchar i;
ADS1198_Send_CMD_One(cmd) 21、; // 發(fā)送接收命令第一字節(jié)+地址
ADS1198_Send_CMD_One(len-1); // 發(fā)送接收第二字節(jié)命令,接收數(shù)據(jù)長(zhǎng)度
for(i=0;i 22、 延時(shí)
SomeNOP();SomeNOP();SomeNOP();SomeNOP();
if(UCB0IFG&UCRXIFG) // 判斷接收標(biāo)志
{
dat[i] = UCB0RXBUF; // 接收數(shù)據(jù)字節(jié)
}
else
{
return FALSE;
}
}
23、 return TRUE;
}
//-------------------------------------------------------------------------
// 連續(xù)采集模式下接收數(shù)據(jù)
//-------------------------------------------------------------------------
uchar ADS1198_ReadData_Continue(uchar dat[],uchar len)
{
uchar i;
for(i=0;i 24、
{
ADS1198_Send_CMD_One(0); // 發(fā)送SPI時(shí)鐘,DOUT=0
SomeNOP();SomeNOP();SomeNOP();SomeNOP(); // 延時(shí)
SomeNOP();SomeNOP();SomeNOP();SomeNOP();
if(UCB0IFG&UCRXIFG) // 判斷接收標(biāo)志
{
25、dat[i] = UCB0RXBUF; // 接收數(shù)據(jù)字節(jié)
}
else
{
return FALSE;
}
}
return TRUE;
}
//-------------------------------------------------------------------------
void ADS1198_Init(void)
{
uchar d[8];
P2 26、DIR |= 0x60; // ads1198 RST,READY管腳輸出
P3DIR |= 0x01; // ADS1198 CS 管腳輸出
ADS1198_CS0; // 選中ADS1198
ADS1198_PWDN1; // 禁止進(jìn)入低功耗 27、模式
ADS1198_START0; // 禁止采集
ADS1198_RST1; // 復(fù)位置高
delayMS(1000); // 延時(shí)1S
ADS1198_RST0; // 復(fù)位1198
delayMS(100); 28、 // 延時(shí)100MS
ADS1198_RST1; // 復(fù)位清除
delayMS(1);
ADS1198_Send_CMD_One(SDATAC); // 發(fā)送停止命令
ADS1198_Recive_Data(0x20+Addr_ID,1,d); // 讀ADS1198 ID號(hào)
if(d[0]==0 29、xB6) // 判斷是否為ADS1198 ID
{
d[0] = 0xCC; // 內(nèi)部參考+2.4V+RLDREF(AVDD-AVSS)/2+RLD buffer允許+RLD檢測(cè)允許
ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG3,1,d); // 配置寄存器
d[0] = 0x45; 30、 // Multiple readback+250SPS
ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG1,1,d); // 配置寄存器
d[0] = 0x34; // INT_TEST內(nèi)部測(cè)試信號(hào)+(-2X測(cè)試信號(hào))+Fclk/2.048M
ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG2,1,d); // 配置寄存器
d[0] = 0x3 31、3; // (7.5%/92.5%)+Pull-up/pull-down mode+DC lead-off detection turned on
ADS1198_Send_CMD_Muti(0x40+Addr_LOFF,1,d);
d[0]=0x60;d[1]=0x60;d[2]=0x60;d[3]=0x60;d[4]=0x60;d[5]=0x60;d[6]=0x60;d[7]=0x60;// 12倍增益+正常導(dǎo)聯(lián)輸入
//d[0]=0x65;d[1]=0x6 32、5;d[2]=0x65;d[3]=0x65;d[4]=0x65;d[5]=0x65;d[6]=0x65;d[7]=0x65;// 12倍增益+測(cè)試信號(hào)輸入
ADS1198_Send_CMD_Muti(0x40+Addr_CH1SET,8,d);
d[0] = 0x01;d[1] = 0x03; // RLD1P,RLD1N,RLD2N對(duì)應(yīng)R,L,F,為右腿驅(qū)動(dòng)源
ADS1198_Send_CMD_Muti(0x40+Addr_RLD_SENSP,2,d); // 配置寄存器
33、 d[0] = 0x00;d[1] = 0x00; // 8個(gè)通道不檢測(cè)測(cè)導(dǎo)聯(lián)脫落
ADS1198_Send_CMD_Muti(0x40+Addr_LOFF_SENSP,2,d); // 配置寄存器
d[0] = 0x01; // 通道1,通道2作為起搏檢測(cè)通道,開啟起搏檢測(cè)緩沖器
ADS1198_Send_CMD_Muti(0x40+Addr_PACE,1,d); // 配置寄存器
34、
d[0] = 0x02; // 持續(xù)轉(zhuǎn)換模式+Lead-off comparators enabled
ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG4,1,d);
d[0] = 0x08;d[1] = 0xCB; // power on WCTA+WCTB+WCTC,RLD1P,RLD1N,RLD2N為威爾遜中心信號(hào)源
ADS1198_Send_CMD_Muti(0x40+Addr_WCT1,2,d);
ADS1198_Send_CMD_One(RDATAC); // 連續(xù)讀命令
ADS1198_START1; // 開始數(shù)據(jù)采集
}
}
//--------------------------------------------------------------------------
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)對(duì)照檢查材料范文(三篇)
- 金融工作主題黨課講稿范文(匯編)
- 鍋爐必備學(xué)習(xí)材料
- 鍋爐設(shè)備的檢修
- 主題黨課講稿:走中國(guó)特色金融發(fā)展之路加快建設(shè)金融強(qiáng)國(guó)(范文)
- 鍋爐基礎(chǔ)知識(shí):?jiǎn)t注意事項(xiàng)技術(shù)問答題
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)“四個(gè)帶頭”對(duì)照檢查材料范文(三篇)
- 正常運(yùn)行時(shí)影響鍋爐汽溫的因素和調(diào)整方法
- 3.鍋爐檢修模擬考試復(fù)習(xí)題含答案
- 司爐作業(yè)人員模擬考試試卷含答案-2
- 3.鍋爐閥門模擬考試復(fù)習(xí)題含答案
- 某公司鍋爐安全檢查表
- 3.工業(yè)鍋爐司爐模擬考試題庫(kù)試卷含答案
- 4.司爐工考試題含答案解析
- 發(fā)電廠鍋爐的運(yùn)行監(jiān)視和調(diào)整