轉換原理及參數指標
1. 采樣定理
2. 為了正確無誤的用圖5.2.2中所示的采樣信號vs表示模擬信號vi,必須滿足式中, fs>=2fmax
fs為采樣頻率;fmax為輸入信號vi的最高頻率分量的頻率;上式就是所謂的采樣定理。滿足采樣定理的條件下,可以用一個低通濾波器將信號vs還原為vi,這個低通濾波器的電壓傳輸系數|A(f)|在低于fmax的范圍內應保持不變,而在fs-fmax以前應迅速下降為零,采樣定理規定了A/D轉換的頻率下限。
AD7792 遇到的問題/學到的知識點
學到的知識點:
1.在stm32中
U8 : unsigned char
U16: unsigned short
U32: unsigned int
2. 在stm32中 AD7792采樣的電壓數值要經過轉換成ASCII碼字符在串口中打印出來有兩種編程方式實現:
u8TempD;
u16 Datau16;
char str[20];
unsigned short iData[3];
u8 Strvbat[8]={'/','/','/',',',0,0,0,0};
u8 ASCII[21]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','+',//10->16
',',//11-17
'-',//12-18
'.',//13-19
'/',//14-20
};
方式一:(簡潔版)
AD_VBat[TempD] = SPI_Read16Bit();
memcpy(&iData[0],& AD_VBat[TempD],2);
sprintf(str,"%d",iData[0]);
UART1_TX485_Puts(USART1,&str[0]);
方式二:(復雜版)
AD_VBat[TempD] = SPI_Read16Bit();
Datau16 = AD_VBat[TempD];
Strvbat[0]=ASCII[Datau16/10000];
Strvbat[1]=ASCII[Datau16%10000/1000];
Strvbat[2]=ASCII[Datau16%1000/100];
Strvbat[3]=ASCII[Datau16%100/10];
Strvbat[4]=ASCII[Datau16%10];
UART1_TX485_Puts(USART1,&Strvbat[0]);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
3.遇到的問題
問題一:通過串口打印,采樣的數值為32768左右轉化后的電池電壓為2.5V,而電池實際電壓應該為3.32v采樣數值應該為43582左右的數值;
問題根源:通道切換的問題;
AD7792有3個模擬輸入通道,初始化AD7792配置函數中,寫配置寄存器SPI_SendByte(0x10); /* 寫配置寄存器*/
SPI_Send16Bit(0x1080); // 偏置電壓禁用禁用熔斷電流單極性編碼內部基準
SPI_Send16Bit(0x1080)設置的采樣通道是采樣電流的通道,所以采樣的是電流的數值;
題二:在移植AD7792獨立出來時,發現電池電壓采樣值打印為0000;
問題根源:SPI配置問題;
原理圖:
錯誤配置:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽輸出
GPIO_Init(GPIOA, &GPIO_InitStructure);
正確配置:
/* Configure SPI1 pins: SCK, MISO and MOSI */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_4|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 配置MISO為輸入 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入
GPIO_Init(GPIOA, &GPIO_InitStructure);
原文標題:STM32菜鳥成長記錄---AD7792遇到的問題
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
請教有用過AD7792測溫PT100
STM32菜鳥成長記錄---AD7792遇到的問題
AD7792嘗試AD轉換讀取的轉換結果一直是(0xff,0xff)
AD7792轉換結果波動大
AD7792測溫測出來的值一直為0
AD7792的兩路激勵電流源同時輸出不相等的原因?
求助,關于AD7792偏置電壓發生器設置的問題
用AD7792做了個一個熱電偶測溫模塊,無規律的出現AD7792損壞是怎么回事?
AD7792/AD7793,pdf datasheet (A
AD7792/ad7793三通道的低噪聲低功耗16/24位ADC對放大器和基準芯片
![<b class='flag-5'>AD7792</b>/ad7793三通道的低噪聲低功耗16/24位ADC對放大器和基準芯片](https://file.elecfans.com/web2/M00/49/F0/pYYBAGKhvHmAU-qJAAA5yuNVBek130.png)
AD7792/AD7793:3通道、低噪聲、低功耗、16/24位Σ-ΔADC內置片內儀表放大器和基準電壓源 數據手冊
![<b class='flag-5'>AD7792</b>/AD7793:3通道、低噪聲、低功耗、16/24位Σ-ΔADC內置片內儀表放大器和基準電壓源 數據手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EVAD7792 AD7792 評估板
![EVAD<b class='flag-5'>7792</b> <b class='flag-5'>AD7792</b> 評估板](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論