久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6149|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stm32f103c8t6最小系統(tǒng)驅(qū)動(dòng)ads8681(ads8685,ads8689)測試程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:955625 發(fā)表于 2021-7-26 18:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
實(shí)驗(yàn)器材:
        stm32f103c8t6最小系統(tǒng),ads8681(ads8685,ads8689)
        
實(shí)驗(yàn)?zāi)康?
        以硬件spi1驅(qū)動(dòng)該ADC芯片工作讀取數(shù)據(jù)
        
硬件資源:
    1.ads8681外圍電路請查看官方文檔設(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)只測試了ads8681芯片.根據(jù)官方文檔或可驅(qū)動(dòng)ads8685以及ads8689芯片,具體請自行測試;
        2.由于stm32f103c8t6的硬件spi時(shí)鐘最多為18Mhz,所以未能測試ads8681官方文檔所標(biāo)注的1Msps采樣率;
        3.代碼中驅(qū)動(dòng)該adc芯片采用的是:Standard SPI with CPOL = 0 and CPHASE = 0 模式,如有需要請自行更改配置;
        4.若使用更高速率單片機(jī)驅(qū)動(dòng),請自行研究移植,基本思路一致。
               
注意事項(xiàng):
    注意驅(qū)動(dòng)電壓:
        注意正負(fù)極連接短路!
        
STM32單片機(jī)源程序如下:
  1. #include "ADS8681.h"
  2. #include "spi.h"
  3. #include "delay.h"

  4. // 復(fù)位
  5. void ADS8681_RST(){
  6.         AD_RST = 0;
  7.         delay_ms(30);
  8.         AD_RST = 1;
  9.         delay_ms(30);
  10. }
  11. void ADS8681_Init(){
  12.         GPIO_InitTypeDef  GPIO_InitStructure;
  13.          
  14.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         //使能PB端口時(shí)鐘
  15.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;        //RST CS
  16.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  17.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度為50MHz
  18.         GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根據(jù)設(shè)定參數(shù)初始化GPIOB

  19.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//RVS
  20.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  //上拉輸入
  21.         GPIO_Init(GPIOB, &GPIO_InitStructure);
  22.         SPI1_Init();
  23.         //AD_SCK=0;
  24.         ADS8681_RST();
  25.          ADS8681_Write_Register(0x14,0x000b);//配置電壓測量范圍,具體對應(yīng)地址位14H的寄存器內(nèi)容
  26. }
  27. //寫寄存器
  28. void ADS8681_Write_Register(u8 Addr,u16 data)  // 11010_00_<9-bit address>_<16-bit data>
  29. {
  30.         u16 retry = 0;
  31.         AD_CS = 1;
  32.         AD_CS = 0;
  33.         while(AD_RVS){//判斷RVS狀態(tài),下同
  34.                 retry++;
  35.                 if(retry>=0XFFFE)        
  36.                         break;
  37.         }
  38.         SPI1_ReadWriteByte((0xD0<<8)|Addr);
  39.         SPI1_ReadWriteByte(data&0xffff);
  40.         AD_CS = 1;
  41. }
  42. // 讀寄存器
  43. u16 ADS8681_Read_Register(u8 Addr)        // 11001_xx_<9-bit address>_00000000_00000000
  44. {
  45.         u16 data1,data2;
  46.         u16 retry = 0;
  47.         AD_CS = 0;
  48.         while(AD_RVS){
  49.                 retry++;
  50.                 if(retry>=0Xff)        
  51.                         break;
  52.         }
  53.         SPI1_ReadWriteByte((0xC8<<8)|Addr);
  54.         SPI1_ReadWriteByte(0x0000);
  55.         AD_CS = 1;
  56.         retry = 0;
  57.         while(!AD_RVS){
  58.                 retry++;
  59.                 if(retry>=0Xff)        
  60.                         break;
  61.         }
  62.         AD_CS = 0;
  63.         retry = 0;
  64.         while(AD_RVS){
  65.                 retry++;
  66.                 if(retry>=0Xff)        
  67.                         break;
  68.         }
  69.         data1 = SPI1_ReadWriteByte(0x00);//低16位
  70.         data2 = SPI1_ReadWriteByte(0x00);//高16位
  71.         AD_CS = 1;
  72.         return (data2<<16)|data1;
  73. }
  74. // 讀取ads8681采樣值
  75. u32 ADS8681_Read_ConversionData()
  76. {
  77.         u16 data;
  78.         u16 retry = 0;
  79.         AD_CS = 1;        
  80.         while(!AD_RVS){
  81.                 retry++;
  82.                 if(retry>=0xfffe)        
  83.                         break;
  84.         }
  85.         AD_CS = 0;        
  86.         retry = 0;
  87.         while(AD_RVS){
  88.                 retry++;
  89.                 if(retry>=0xfffe)        
  90.                         break;
  91.         }        
  92.          data = SPI1_ReadWriteByte(0x00);//里邊的地址任意,該處主要是讀取數(shù)據(jù)
  93.          return data;
  94.                
  95. }
復(fù)制代碼
致謝:
    感謝相關(guān)人員提供的思路以及支持!

聲明:        
        只為提高技術(shù),歡迎交流,不參與撕逼,如有雷同,純屬巧合。
全部代碼下載: C8T6_ADS8681硬件spi.7z (187.23 KB, 下載次數(shù): 175)

評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久一区 | 日本久久综合 | 成人高清视频在线观看 | 草草精品 | 久艹av | 国产色婷婷精品综合在线手机播放 | 日韩中文在线视频 | 精品入口麻豆88视频 | 日本视频在线播放 | 精品国产乱码久久久久久丨区2区 | 亚洲高清在线 | 久久国内精品 | 久久av一区二区三区 | 天天看天天摸天天操 | 国产精品久久久久久久久久99 | 欧美一区二区三区视频在线播放 | 久草a√| 亚洲国产视频一区二区 | 国产高清免费 | 日韩精品一区二区三区中文在线 | 在线观看成年人视频 | 国产高清精品一区二区三区 | 欧美一区二区三区在线观看 | 精品一区av | 亚洲精彩视频在线观看 | 国产精品色婷婷久久58 | 亚洲 欧美 激情 另类 校园 | 午夜精品久久久 | 五月天婷婷狠狠 | 黄色中文字幕 | 国产不卡一区在线观看 | 亚洲精品456 | 午夜小视频免费观看 | 综合久久av | 久久午夜视频 | 午夜激情在线视频 | 久久99精品久久久久久国产越南 | 欧美理伦片在线播放 | 一区二区免费 | 在线观看av中文字幕 | 欧美福利视频 |