实例介绍
【实例简介】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);
}
【实例截图】
└── 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
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论