在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例Android手机应用开发 → stm32f10X ads1256 例程

stm32f10X ads1256 例程

Android手机应用开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:4.94M
  • 下载次数:19
  • 浏览次数:469
  • 发布时间:2022-03-25
  • 实例类别:Android手机应用开发
  • 发 布 人:xiaolijian98
  • 文件格式:.rar
  • 所需积分:1
 相关标签: STM32F1 STM32 STM3 ads stm

实例介绍

【实例简介】stm32f10X ads1256 例程

/**********************************************************

                       
功能:通过ADS1256,以15SPS(可配置为其他采样率)采集单端8路(可配置为差分4路)电压,

接口:
      ADS1256模块    STM32开发板
      5V   <------  5.0V      5V供电
      GND   -------  GND       地

      DRDY  ------>  PB15       准备就绪
      CS    <------  PA8      SPI_CS
      DIN   <------  PB14      SPI_MOSI
      DOUT  ------>  PB13      SPI_MISO
      SCLK  <------  PB12      SPI时钟
      GND   -------  GND       地
      PDWN  <------  PA12       掉电控制 常高
      RST   <------  PA11      复位信号 常高

**********************************************************/
#include "led.h"
#include "delay.h"
#include "sys.h"

#include "usart.h"

#include "wdg.h"
#include "timer.h"


#include "math.h"

#include "string.h"
#include "stdlib.h"


#include "bsp_ads1256.h"

int32_t ADC_Buff[8] = {0};


void Task0()
{

  u8 TASK0_i= 0 ;

Run_Main_Stru.Flag0 = 0;

  Run_Main_Stru.LED_Flash_Flag = 1;
//    TaskFlag.Flag4 = 1;

for (TASK0_i = 0; TASK0_i < 8; TASK0_i )
{
/* 从全局缓冲区读取采样结果。 采样结果是在中断服务程序中读取的。*/
ADC_Buff[TASK0_i] = ADS1256_GetAdc(TASK0_i);
      }


if((CTimer & 0x01) == 0x01)//20ms

 

}
if((CTimer & 0x03) == 0x03)//40ms
{
 
// TaskFlag.Flag2 = 1;

}
if( (CTimer & 0x7f) == 0x7f )//1280ms
{

   

}

}


int main(void)
 {
 

volatile static uint8_t Switch_Task = 0;
int32_t volt[8];
 
float tt = 0;
uint8_t i;
uint8_t ch_num;
char infoBackPC[64];
char infoShowLCD[64];
 
  SystemInit();
delay_init(72);      //延时初始化
NVIC_Configuration();
uart_init(115200);   //串口初始化
Usart2_Init( 115200 ); 
 
Timer3_Init(399,899); //5ms中断一次,用于程序轮询
 
LED_Init();
 
// printf("复位\r\n");
 
 
delay_ms(100); /* 等待上电稳定,等基准电压电路稳定, bsp_InitADS1256() 内部会进行自校准 */
bsp_InitADS1256(); /* 初始化配置ADS1256.  PGA=1, DRATE=30KSPS, BUFEN=1, 输入正负5V */

/* 打印芯片ID (通过读ID可以判断硬件接口是否正常) , 正常时状态寄存器的高4bit = 3 */
// {
// uint8_t id;

// id = ADS1256_ReadChipID();

//// printf("读取芯片ID\r\n");
// if (id != 3)
// {
// sprintf(infoBackPC, "Error, ASD1256 Chip ID = 0x%X\r\n", id);
// }
// else
// {
// sprintf(infoBackPC, "Ok, ASD1256 Chip ID = 0x%X\r\n", id);
// }

//
// printf("ID %s\r\n",infoBackPC);
//
// }

/* 设置PGA增益,数据更新速率 */
#if 1
// USB_SendStr("\r\nPGA增益 = 1, 数据输出速率 = 15sps, 单端8路扫描\r\n\r\n");

ADS1256_CfgADC(ADS1256_GAIN_1, ADS1256_30SPS); /* 配置ADC参数: 增益1:1, 数据输出速率 15Hz ADS1256_15SPS   */

/*
   中断服务程序会自动读取ADC结果保存在全局变量,主程序通过 ADS1256_GetAdc() 函数来读取这些数据
*/
ADS1256_StartScan(0); /* 启动中断扫描模式. 0表示单端8路,1表示差分4路 */
ch_num = 8; /* 通道数 = 8 或者4 */
#else
printf("\r\nPGA增益 = 1, 数据输出速率 = 15sps, 差分4路扫描\r\n\r\n");

ADS1256_CfgADC(ADS1256_GAIN_1, ADS1256_15SPS); /* 配置ADC参数: 增益1:1, 数据输出速率 15Hz */

/*
   中断服务程序会自动读取ADC结果保存在全局变量,主程序通过 ADS1256_GetAdc() 函数来读取这些数据
*/
ADS1256_StartScan(1); /* 启动中断扫描模式. 0表示单端8路,1表示差分4路 */
ch_num = 4; /* 通道数 = 8 或者4 */
#endif

while(1)
{


switch( Switch_Task )
{
case 0: if( Run_Main_Stru.Flag0 == 1) Task0();    break;  //
case 1: if(Run_Main_Stru.LED_Flash_Flag == 1 )    Led_Run(  );    break;
case 2: if(Run_Main_Stru.AD_OUT_Flag == 1 )    AD_DATE_OUTPUT(  );   break;
//


default: Switch_Task = 0;                         break;

Switch_Task ;
if( Switch_Task >= 3 ) 
{
Switch_Task = 0;
}

}
 }
 
 /*****************************************************
函数名  :void Calculate_Sum)
功能 :求和函数
参数 : *Src_Addr 数据存放缓冲区   
Src_Len  存放数据的长度
返回值  :无
*****************************************************/
u8  Calculate_Sum(u8 *Src_Addr,u8 Src_Len)  //求和函数
{
uint16_t i;
u32 Sum = 0;
u8 Sumlow;

for(i = 0;i < Src_Len;i )
{
Sum = Src_Addr[i];
}
Sumlow = (u8)( Sum&0xff );   //取校验和低位

return Sumlow;
}
 
 void AD_DATE_OUTPUT( void )
 {
 
Run_Main_Stru.AD_OUT_Flag = 0;
 
 
    Usart1_Tx_Buf[0] = 0x5A;//枕头
  Usart1_Tx_Buf[1] = 0xA5;//枕头
  Usart1_Tx_Buf[2] = 0x00;//
  Usart1_Tx_Buf[3] = 0x00;//

   Usart1_Tx_Buf[4] =    ( u8 )( ((u32)ADC_Buff[0] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[5] =    ( u8 )( ((u32)ADC_Buff[0] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[6] =     ( u8 )( (u32)ADC_Buff[0]&0xff    );            //第一通道   低位

   Usart1_Tx_Buf[7] =    ( u8 )( ((u32)ADC_Buff[1] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[8] =    ( u8 )( ((u32)ADC_Buff[1] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[9] =     ( u8 )( (u32)ADC_Buff[1]&0xff    );            //第一通道   低位

  Usart1_Tx_Buf[10] =    ( u8 )( ((u32)ADC_Buff[2] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[11] =    ( u8 )( ((u32)ADC_Buff[2] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[12] =     ( u8 )( (u32)ADC_Buff[2]&0xff    );            //第一通道   低位
 
   Usart1_Tx_Buf[13] =    ( u8 )( ((u32)ADC_Buff[3] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[14] =    ( u8 )( ((u32)ADC_Buff[3] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[15] =     ( u8 )( (u32)ADC_Buff[3]&0xff    );            //第一通道   低位
 
Usart1_Tx_Buf[16] =    ( u8 )( ((u32)ADC_Buff[4] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[17] =    ( u8 )( ((u32)ADC_Buff[4] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[18] =     ( u8 )( (u32)ADC_Buff[4]&0xff    );            //第一通道   低位
 
  Usart1_Tx_Buf[19] =    ( u8 )( ((u32)ADC_Buff[5] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[20] =    ( u8 )( ((u32)ADC_Buff[5] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[21] =     ( u8 )( (u32)ADC_Buff[5]&0xff    );            //第一通道   低位
 
Usart1_Tx_Buf[22] =    ( u8 )( ((u32)ADC_Buff[6] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[23] =    ( u8 )( ((u32)ADC_Buff[6] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[24] =     ( u8 )( (u32)ADC_Buff[6]&0xff    );            //第一通道   低位
 
Usart1_Tx_Buf[25] =    ( u8 )( ((u32)ADC_Buff[7] &0xff0000)>>16 );   //第一通道  最 高位
   Usart1_Tx_Buf[26] =    ( u8 )( ((u32)ADC_Buff[7] &0xff00)>>8 );      //第一通道  次 高位
   Usart1_Tx_Buf[27] =     ( u8 )( (u32)ADC_Buff[7]&0xff    );            //第一通道   低位
 



Usart1_Tx_Buf[28] = Calculate_Sum(Usart1_Tx_Buf,28) ; //求和函数
// Usart_SendArray( USART1, Usart1_Tx_Buf, 29);
 
    Usart_SendArray( USART2, Usart1_Tx_Buf, 29);
 
 
 }
 
 
 
 

【实例截图】

from clipboard

【核心代码】

.
└── ADS125_core
    ├── ADS1256.build_log.htm
    ├── ADS1256.lnp
    ├── ADS1256.map
    ├── ADS1256.uvgui.asus
    ├── ADS1256.uvgui_asus.bak
    ├── ADS1256.uvopt
    ├── ADS1256.uvproj
    ├── ADS1256_Target 1.dep
    ├── ADS1256_uvopt.bak
    ├── ADS1256_uvproj.bak
    ├── CORE
    │   ├── core_cm3.c
    │   ├── core_cm3.h
    │   ├── startup_stm32f10x_hd.s
    │   └── startup_stm32f10x_md.s
    ├── HARDWARE
    │   ├── ADS1256
    │   │   ├── bsp_ads1256.c
    │   │   └── bsp_ads1256.h
    │   ├── LED
    │   │   ├── led.c
    │   │   └── led.h
    │   ├── TIMER
    │   │   ├── timer.c
    │   │   └── timer.h
    │   └── WDG
    │       ├── wdg.c
    │       └── wdg.h
    ├── STM32F10x_FWLib
    │   ├── inc
    │   │   ├── misc.h
    │   │   ├── stm32f10x_adc.h
    │   │   ├── stm32f10x_bkp.h
    │   │   ├── stm32f10x_can.h
    │   │   ├── stm32f10x_cec.h
    │   │   ├── stm32f10x_crc.h
    │   │   ├── stm32f10x_dac.h
    │   │   ├── stm32f10x_dbgmcu.h
    │   │   ├── stm32f10x_dma.h
    │   │   ├── stm32f10x_exti.h
    │   │   ├── stm32f10x_flash.h
    │   │   ├── stm32f10x_fsmc.h
    │   │   ├── stm32f10x_gpio.h
    │   │   ├── stm32f10x_i2c.h
    │   │   ├── stm32f10x_iwdg.h
    │   │   ├── stm32f10x_pwr.h
    │   │   ├── stm32f10x_rcc.h
    │   │   ├── stm32f10x_rtc.h
    │   │   ├── stm32f10x_sdio.h
    │   │   ├── stm32f10x_spi.h
    │   │   ├── stm32f10x_tim.h
    │   │   ├── stm32f10x_usart.h
    │   │   └── stm32f10x_wwdg.h
    │   └── src
    │       ├── misc.c
    │       ├── stm32f10x_adc.c
    │       ├── stm32f10x_bkp.c
    │       ├── stm32f10x_can.c
    │       ├── stm32f10x_cec.c
    │       ├── stm32f10x_crc.c
    │       ├── stm32f10x_dac.c
    │       ├── stm32f10x_dbgmcu.c
    │       ├── stm32f10x_dma.c
    │       ├── stm32f10x_exti.c
    │       ├── stm32f10x_flash.c
    │       ├── stm32f10x_fsmc.c
    │       ├── stm32f10x_gpio.c
    │       ├── stm32f10x_i2c.c
    │       ├── stm32f10x_iwdg.c
    │       ├── stm32f10x_pwr.c
    │       ├── stm32f10x_rcc.c
    │       ├── stm32f10x_rtc.c
    │       ├── stm32f10x_sdio.c
    │       ├── stm32f10x_spi.c
    │       ├── stm32f10x_tim.c
    │       ├── stm32f10x_usart.c
    │       └── stm32f10x_wwdg.c
    ├── SYSTEM
    │   ├── delay
    │   │   ├── delay.c
    │   │   └── delay.h
    │   ├── sys
    │   │   ├── sys.c
    │   │   └── sys.h
    │   └── usart
    │       ├── usart.c
    │       └── usart.h
    ├── USER
    │   ├── DebugConfig
    │   │   └── Target_1_STM32F103RB_1.0.0.dbgconf
    │   ├── JLinkSettings.ini
    │   ├── TIMER.build_log.htm
    │   ├── TIMER.hex
    │   ├── TIMER.sct
    │   ├── TIMER.uvgui.E430C
    │   ├── TIMER.uvguix.Administrator
    │   ├── TIMER.uvguix.asus
    │   ├── TIMER.uvguix_asus.bak
    │   ├── TIMER.uvopt
    │   ├── TIMER.uvoptx
    │   ├── TIMER.uvproj.saved_uv4
    │   ├── TIMER.uvprojx
    │   ├── TIMER_Target 1.dep
    │   ├── TIMER_uvoptx.bak
    │   ├── TIMER_uvprojx.bak
    │   ├── bsp_ads1256.d
    │   ├── core_cm3.crf
    │   ├── core_cm3.d
    │   ├── core_cm3.o
    │   ├── delay.d
    │   ├── led.d
    │   ├── main.c
    │   ├── main.d
    │   ├── startup_stm32f10x_md.d
    │   ├── stm32f10x.h
    │   ├── stm32f10x_conf.h
    │   ├── stm32f10x_it.c
    │   ├── stm32f10x_it.d
    │   ├── stm32f10x_it.h
    │   ├── sys.d
    │   ├── system_stm32f10x.c
    │   ├── system_stm32f10x.d
    │   ├── system_stm32f10x.h
    │   ├── timer.d
    │   ├── usart.d
    │   └── wdg.d
    ├── bsp_ads1256.crf
    ├── bsp_ads1256.d
    ├── bsp_ads1256.o
    ├── core_cm3.crf
    ├── core_cm3.d
    ├── core_cm3.o
    ├── delay.crf
    ├── delay.d
    ├── delay.o
    ├── led.crf
    ├── led.d
    ├── led.o
    ├── main.crf
    ├── main.d
    ├── main.o
    ├── misc.crf
    ├── misc.d
    ├── misc.o
    ├── startup_stm32f10x_hd.d
    ├── startup_stm32f10x_hd.lst
    ├── startup_stm32f10x_hd.o
    ├── startup_stm32f10x_md.d
    ├── startup_stm32f10x_md.lst
    ├── startup_stm32f10x_md.o
    ├── stm32f10x_adc.crf
    ├── stm32f10x_adc.d
    ├── stm32f10x_adc.o
    ├── stm32f10x_bkp.crf
    ├── stm32f10x_bkp.d
    ├── stm32f10x_bkp.o
    ├── stm32f10x_can.crf
    ├── stm32f10x_can.d
    ├── stm32f10x_can.o
    ├── stm32f10x_cec.crf
    ├── stm32f10x_cec.d
    ├── stm32f10x_cec.o
    ├── stm32f10x_crc.crf
    ├── stm32f10x_crc.d
    ├── stm32f10x_crc.o
    ├── stm32f10x_dac.crf
    ├── stm32f10x_dac.d
    ├── stm32f10x_dac.o
    ├── stm32f10x_dbgmcu.crf
    ├── stm32f10x_dbgmcu.d
    ├── stm32f10x_dbgmcu.o
    ├── stm32f10x_dma.crf
    ├── stm32f10x_dma.d
    ├── stm32f10x_dma.o
    ├── stm32f10x_exti.crf
    ├── stm32f10x_exti.d
    ├── stm32f10x_exti.o
    ├── stm32f10x_flash.crf
    ├── stm32f10x_flash.d
    ├── stm32f10x_flash.o
    ├── stm32f10x_fsmc.crf
    ├── stm32f10x_fsmc.d
    ├── stm32f10x_fsmc.o
    ├── stm32f10x_gpio.crf
    ├── stm32f10x_gpio.d
    ├── stm32f10x_gpio.o
    ├── stm32f10x_i2c.crf
    ├── stm32f10x_i2c.d
    ├── stm32f10x_i2c.o
    ├── stm32f10x_it.crf
    ├── stm32f10x_it.d
    ├── stm32f10x_it.o
    ├── stm32f10x_iwdg.crf
    ├── stm32f10x_iwdg.d
    ├── stm32f10x_iwdg.o
    ├── stm32f10x_pwr.crf
    ├── stm32f10x_pwr.d
    ├── stm32f10x_pwr.o
    ├── stm32f10x_rcc.crf
    ├── stm32f10x_rcc.d
    ├── stm32f10x_rcc.o
    ├── stm32f10x_rtc.crf
    ├── stm32f10x_rtc.d
    ├── stm32f10x_rtc.o
    ├── stm32f10x_sdio.crf
    ├── stm32f10x_sdio.d
    ├── stm32f10x_sdio.o
    ├── stm32f10x_spi.crf
    ├── stm32f10x_spi.d
    ├── stm32f10x_spi.o
    ├── stm32f10x_tim.crf
    ├── stm32f10x_tim.d
    ├── stm32f10x_tim.o
    ├── stm32f10x_usart.crf
    ├── stm32f10x_usart.d
    ├── stm32f10x_usart.o
    ├── stm32f10x_wwdg.crf
    ├── stm32f10x_wwdg.d
    ├── stm32f10x_wwdg.o
    ├── sys.crf
    ├── sys.d
    ├── sys.o
    ├── system_stm32f10x.crf
    ├── system_stm32f10x.d
    ├── system_stm32f10x.o
    ├── timer.crf
    ├── timer.d
    ├── timer.o
    ├── usart.crf
    ├── usart.d
    ├── usart.o
    ├── wdg.crf
    ├── wdg.d
    └── wdg.o

16 directories, 219 files


标签: STM32F1 STM32 STM3 ads stm

实例下载地址

stm32f10X ads1256 例程

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警