標(biāo)題:
stm32f103c8t6最小系統(tǒng)驅(qū)動(dòng)ads8681(ads8685,ads8689)測(cè)試程序
[打印本頁]
作者:
WP_51
時(shí)間:
2021-7-26 18:20
標(biāo)題:
stm32f103c8t6最小系統(tǒng)驅(qū)動(dòng)ads8681(ads8685,ads8689)測(cè)試程序
實(shí)驗(yàn)器材:
stm32f103c8t6最小系統(tǒng),ads8681(ads8685,ads8689)
實(shí)驗(yàn)?zāi)康?
以硬件spi1驅(qū)動(dòng)該ADC芯片工作讀取數(shù)據(jù)
硬件資源:
1.ads8681外圍電路請(qǐng)查看官方文檔設(shè)計(jì)。
2.引腳連接如下:
stm32f103c8t6 ads8681(AD)
PA5-----------------AD_SCK
硬件spi1引腳 PA6----------------AD_SDO_0
PA7-----------------AD_SDI
PB10----------------AD_RVS
PB11----------------AD_RST
PB12----------------AD_CS
其它說明:
1.本實(shí)驗(yàn)只測(cè)試了ads8681芯片.根據(jù)官方文檔或可驅(qū)動(dòng)ads8685以及ads8689芯片,具體請(qǐng)自行測(cè)試;
2.由于stm32f103c8t6的硬件spi時(shí)鐘最多為18Mhz,所以未能測(cè)試ads8681官方文檔所標(biāo)注的1Msps采樣率;
3.代碼中驅(qū)動(dòng)該adc芯片采用的是:Standard SPI with CPOL = 0 and CPHASE = 0 模式,如有需要請(qǐng)自行更改配置;
4.若使用更高速率單片機(jī)驅(qū)動(dòng),請(qǐng)自行研究移植,基本思路一致。
注意事項(xiàng):
注意驅(qū)動(dòng)電壓:
注意正負(fù)極連接短路!
STM32單片機(jī)源程序如下:
#include "ADS8681.h"
#include "spi.h"
#include "delay.h"
// 復(fù)位
void ADS8681_RST(){
AD_RST = 0;
delay_ms(30);
AD_RST = 1;
delay_ms(30);
}
void ADS8681_Init(){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口時(shí)鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12; //RST CS
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根據(jù)設(shè)定參數(shù)初始化GPIOB
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//RVS
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入
GPIO_Init(GPIOB, &GPIO_InitStructure);
SPI1_Init();
//AD_SCK=0;
ADS8681_RST();
ADS8681_Write_Register(0x14,0x000b);//配置電壓測(cè)量范圍,具體對(duì)應(yīng)地址位14H的寄存器內(nèi)容
}
//寫寄存器
void ADS8681_Write_Register(u8 Addr,u16 data) // 11010_00_<9-bit address>_<16-bit data>
{
u16 retry = 0;
AD_CS = 1;
AD_CS = 0;
while(AD_RVS){//判斷RVS狀態(tài),下同
retry++;
if(retry>=0XFFFE)
break;
}
SPI1_ReadWriteByte((0xD0<<8)|Addr);
SPI1_ReadWriteByte(data&0xffff);
AD_CS = 1;
}
// 讀寄存器
u16 ADS8681_Read_Register(u8 Addr) // 11001_xx_<9-bit address>_00000000_00000000
{
u16 data1,data2;
u16 retry = 0;
AD_CS = 0;
while(AD_RVS){
retry++;
if(retry>=0Xff)
break;
}
SPI1_ReadWriteByte((0xC8<<8)|Addr);
SPI1_ReadWriteByte(0x0000);
AD_CS = 1;
retry = 0;
while(!AD_RVS){
retry++;
if(retry>=0Xff)
break;
}
AD_CS = 0;
retry = 0;
while(AD_RVS){
retry++;
if(retry>=0Xff)
break;
}
data1 = SPI1_ReadWriteByte(0x00);//低16位
data2 = SPI1_ReadWriteByte(0x00);//高16位
AD_CS = 1;
return (data2<<16)|data1;
}
// 讀取ads8681采樣值
u32 ADS8681_Read_ConversionData()
{
u16 data;
u16 retry = 0;
AD_CS = 1;
while(!AD_RVS){
retry++;
if(retry>=0xfffe)
break;
}
AD_CS = 0;
retry = 0;
while(AD_RVS){
retry++;
if(retry>=0xfffe)
break;
}
data = SPI1_ReadWriteByte(0x00);//里邊的地址任意,該處主要是讀取數(shù)據(jù)
return data;
}
復(fù)制代碼
致謝:
感謝相關(guān)人員提供的思路以及支持!
聲明:
只為提高技術(shù),歡迎交流,不參與撕逼,如有雷同,純屬巧合。
全部代碼下載:
C8T6_ADS8681硬件spi.7z
(187.23 KB, 下載次數(shù): 175)
2021-7-26 18:40 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1