欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機(jī)+ADS1115讀數(shù)據(jù)異常,求助高手幫忙解決

查看數(shù): 935 | 評論數(shù): 4 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2025-6-5 00:07

正文摘要:

本帖最后由 七彩的夢想 于 2025-6-5 23:44 編輯 最近心血來潮買了幾個ADS1115模塊,想找個時間測試驗(yàn)證一下。發(fā)現(xiàn)模塊配送的資料是Arduino平臺,手頭沒有Arduino硬件,只有STC8G1K08單片機(jī),于是在本論壇找了個現(xiàn) ...

回復(fù)

ID:66862 發(fā)表于 2025-6-5 23:41
從波形圖上看,讀回來的數(shù)據(jù)就有問題,是滿量程的時候?qū)?yīng)數(shù)據(jù) 7F F0
ID:66862 發(fā)表于 2025-6-5 23:33
angmall 發(fā)表于 2025-6-5 16:42
AI的回復(fù)。

根據(jù)你的描述(“15位數(shù)據(jù)的低4位無法正常讀取,一直為0”),結(jié)合你提供的ADS1115驅(qū)動代碼 ...

感謝你的解答與幫助,我抽個時間好好檢查一下
ID:155507 發(fā)表于 2025-6-5 16:42
AI的回復(fù)。

根據(jù)你的描述(“15位數(shù)據(jù)的低4位無法正常讀取,一直為0”),結(jié)合你提供的ADS1115驅(qū)動代碼,這里分析可能的原因和解決方案:

---

## 1. **ADS1115數(shù)據(jù)格式分析**

ADS1115是16位ADC,但實(shí)際有效數(shù)據(jù)為15位(最高位為符號位,單端輸入時符號位為0)。數(shù)據(jù)寄存器為2字節(jié),結(jié)構(gòu)如下:


15  14   13   12   11   10    9    8    7    6    5     4     3   2    1   0
S   D14 D13 D12 D11 D10 D9  D8  D7  D6  D5  D4  D3  D2  D1  D0

其中,S為符號位(單端輸入時為0),D14~D0為數(shù)據(jù)位。

你代碼中的讀取方式為:

D_ADS = Result[0] * 256 + Result[1];

這里`Result`和`Result[1]`分別對應(yīng)高字節(jié)和低字節(jié)。

---

## 2. **低4位為0的可能原因**

### **(1)數(shù)據(jù)拼接問題**

- **Result和Result[1]的類型是否正確?**
  - 如果`Result`數(shù)組定義為`unsigned int`,而你用`Read_N_Byte(Result, 2);`讀取數(shù)據(jù),那么`Result`和`Result[1]`應(yīng)該分別對應(yīng)高字節(jié)和低字節(jié)。
  - 但`Read_N_Byte`函數(shù)原型為`void Read_N_Byte(unsigned int*readbuff,unsigned char n)`,而`Read_1_Byte`返回的是`unsigned char`,所以`readbuff[i] = Read_1_Byte();`會把每個字節(jié)存到`unsigned int`數(shù)組的一個單元里,而不是連續(xù)存兩個字節(jié)。
  - **正確做法**:`Result`應(yīng)該定義為`unsigned char Result[2];`,然后`Read_N_Byte(Result, 2);`(此時函數(shù)參數(shù)類型也要改為`unsigned char*`)。
  - **你目前的實(shí)現(xiàn)**:`Result`和`Result[1]`都是`unsigned int`,每個單元只存了一個字節(jié),但拼接時直接相加,低字節(jié)可能被高位覆蓋或未正確賦值。

### **(2)I2C讀取時序問題**

- **I2C讀取時,是否完整讀取了兩個字節(jié)?**
  - 確保`Read_N_Byte`函數(shù)正確讀取了兩個字節(jié),且低字節(jié)(Result[1])的數(shù)據(jù)沒有被丟棄或覆蓋。
  - 檢查`Read_1_Byte`函數(shù)是否正確返回每個字節(jié)。

### **(3)ADS1115配置問題**

- **是否配置為單端輸入、正確通道、正確PGA?**
  - 你的代碼中配置為單端輸入(MUX_A0~A3),PGA為4.096V,基本沒問題。
- **是否配置為連續(xù)轉(zhuǎn)換模式?**
  - 你的代碼中`MODE = MODE_1`(連續(xù)轉(zhuǎn)換),建議改為單次轉(zhuǎn)換(MODE_0),并在每次讀取前啟動轉(zhuǎn)換。

### **(4)數(shù)據(jù)對齊問題**

- **如果Result和Result[1]都是unsigned int,且每個單元只存了一個字節(jié),那么低字節(jié)的低4位可能被高位覆蓋。**
  - 例如,如果`Result = 0x12`,`Result[1] = 0x34`,拼接時`Result * 256 + Result[1]`理論上沒問題,但如果`Result[1]`的值不正確(比如被覆蓋或未賦值),那么低4位會為0。

---

## 3. **解決方案**

### **(1)修改Result數(shù)組類型**


unsigned char Result[2]; // 改為unsigned char


### **(2)修改Read_N_Byte函數(shù)**


void Read_N_Byte(unsigned char *readbuff, unsigned char n)
{
    unsigned char i;
    for(i = 0; i < n; i++)
    {
        readbuff[i] = Read_1_Byte();
        if(i == n - 1)
            NACK();  // 不連續(xù)讀字節(jié)
        else
            ACK();   // 連續(xù)讀字節(jié)
    }
    Stop();
}


### **(3)修改數(shù)據(jù)拼接方式**


D_ADS = ((unsigned int)Result[0] << 8) | Result[1];


### **(4)檢查I2C時序和硬件連接**

- **確保SCL和SDA引腳配置正確,無干擾。**
- **確保ADS1115供電和參考電壓正常。**

### **(5)建議改為單次轉(zhuǎn)換模式**


#define MODE MODE_0  // 單次轉(zhuǎn)換

并在每次讀取前寫入配置寄存器啟動轉(zhuǎn)換。

---

## 4. **總結(jié)**

- **低4位為0的根本原因很可能是Result數(shù)組類型和Read_N_Byte函數(shù)實(shí)現(xiàn)不匹配,導(dǎo)致低字節(jié)數(shù)據(jù)未正確保存。**
- **建議將Result改為unsigned char數(shù)組,并修改Read_N_Byte函數(shù)為unsigned char*類型。**
- **數(shù)據(jù)拼接時使用位操作,確保低字節(jié)不被覆蓋。**

---

## 5. **示例修正代碼片段**


unsigned char Result[2]; // 改為unsigned char

void Read_N_Byte(unsigned char *readbuff, unsigned char n)
{
    unsigned char i;
    for(i = 0; i < n; i++)
    {
        readbuff[i] = Read_1_Byte();
        if(i == n - 1)
            NACK();
        else
            ACK();
    }
    Stop();
}

// 讀取數(shù)據(jù)
Read_N_Byte(Result, 2);
D_ADS = ((unsigned int)Result[0] << 8) | Result[1];


這樣修改后,低4位數(shù)據(jù)應(yīng)該能正常讀取[1]。
ID:1121801 發(fā)表于 2025-6-5 10:44
感覺很復(fù)雜,我進(jìn)來是標(biāo)記一下等著學(xué)習(xí)的,大神快出來

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表