没有试30000sps

采样率低可能还不能用,需要改变SPI速率等

使用ADS1256DRDY引脚作中断触发进行数据采集

main.c中(死循环前只执行一次):

 1         if (state)
 2         {
 3             ADS1256WREG(ADS1256_MUX,(0 << 4) | ADS1256_MUXN_AINCOM);        //ÉèÖÃͨµÀ
 4
 5             GPIO_ResetBits(GPIOB, GPIO_Pin_6);;
 6             while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY)); //µ±ADS1256_DRDYΪµÍʱ²ÅÄÜд¼Ä´æÆ÷
 7         //    ADS1256WREG(ADS1256_MUX,channel);        //ÉèÖÃͨµÀ
 8             SPI_WriteByte(ADS1256_CMD_SYNC);
 9         //    while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));
10             SPI_WriteByte(ADS1256_CMD_WAKEUP);
11             while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));
12             SPI_WriteByte(ADS1256_CMD_RDATAC);
13             while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));
14             TIM_Cmd(TIM4, ENABLE);  //ʹÄÜTIMxÍâÉè
15             delay_us(8);
16             state = 0;
17         }

外部中断:

u8 state=1;long double getval[15010];
static u32 i;
//ÍⲿÖжÏ0·þÎñ³ÌÐò
void EXTI9_5_IRQHandler(void)
{long ulResult;long double ldVolutage;if(EXTI_GetITStatus(EXTI_Line8)!=RESET)     {//        ADS1256WREG(ADS1256_MUX,(0 << 4) | ADS1256_MUXN_AINCOM);        //ÉèÖÃͨµÀ
//
//        GPIO_ResetBits(GPIOB, GPIO_Pin_6);;
//        while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY)); //µ±ADS1256_DRDYΪµÍʱ²ÅÄÜд¼Ä´æÆ÷
//    //    ADS1256WREG(ADS1256_MUX,channel);        //ÉèÖÃͨµÀ
//        SPI_WriteByte(ADS1256_CMD_SYNC);
//    //    while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));
//        SPI_WriteByte(ADS1256_CMD_WAKEUP);
//        while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));
//        SPI_WriteByte(ADS1256_CMD_RDATA);
//        while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));
//        delay_us(8);
//    if(i<15000){ulResult |= (SPI_WriteByte(0xff) << 16);ulResult |= (SPI_WriteByte(0xff) << 8);ulResult |= SPI_WriteByte(0xff);state = 1;if( ulResult & 0x800000 ){ulResult = ~(unsigned long)ulResult;ulResult &= 0x7fffff;ulResult += 1;ulResult = -ulResult;}getval[i++] = (long double)ulResult*5/8388607;
//            i++;
//            printf("i = %d\r\n",i);
//            printf("%lf",ldVolutage);     //double
//            printf("V\r\n");
        }else {
//            for(int t = 0;t<i;t++)
//            {
//                printf("t = %d\r\n",t);
//                printf("%lf",getval[t]);     //double
//                printf("V\r\n");
//            }i=0;}}         EXTI_ClearITPendingBit(EXTI_Line8); //Çå³ýLINE0ÉϵÄÖжϱê־λ
}    //ÍⲿÖжϳõʼ»¯³ÌÐò
//³õʼ»¯PE2~4,PA0ΪÖжÏÊäÈë.
void EXTIX_Init(void)
{NVIC_InitTypeDef   NVIC_InitStructure;EXTI_InitTypeDef   EXTI_InitStructure;//    KEY_Init(); //°´¼ü¶ÔÓ¦µÄIO¿Ú³õʼ»¯
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//ʹÄÜSYSCFGʱÖÓ
 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource8);//PB8 Á¬½Óµ½ÖжÏÏß8/* ÅäÖÃEXTI_Line2,3,4 */EXTI_InitStructure.EXTI_Line = EXTI_Line8;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//ÖжÏʼþEXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发EXTI_InitStructure.EXTI_LineCmd = ENABLE;//ÖжÏÏßʹÄÜEXTI_Init(&EXTI_InitStructure);//ÅäÖÃ
 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//ÍⲿÖжÏ0NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//ÇÀÕ¼ÓÅÏȼ¶0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//×ÓÓÅÏȼ¶2NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//ʹÄÜÍⲿÖжÏͨµÀNVIC_Init(&NVIC_InitStructure);//ÅäÖÃ
    }

ADS1256配置

void SPI1_Init(void)
{     GPIO_InitTypeDef  GPIO_InitStructure;SPI_InitTypeDef  SPI_InitStructure;//  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ʹÄÜGPIOBʱÖÓRCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);//ʹÄÜSPI1ʱÖÓ//GPIOFB3,4,5³õʼ»¯ÉèÖÃGPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;//PB3~5¸´Óù¦ÄÜÊä³ö    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜGPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//ÍÆÍìÊä³öGPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ÉÏÀ­GPIO_Init(GPIOB, &GPIO_InitStructure);//³õʼ»¯
    GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3¸´ÓÃΪ SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4¸´ÓÃΪ SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5¸´ÓÃΪ SPI1//ÕâÀïÖ»Õë¶ÔSPI¿Ú³õʼ»¯RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);//¸´Î»SPI1RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);//Í£Ö¹¸´Î»SPI1
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //ÉèÖÃSPIµ¥Ïò»òÕßË«ÏòµÄÊý¾Ýģʽ:SPIÉèÖÃΪ˫ÏßË«ÏòÈ«Ë«¹¤SPI_InitStructure.SPI_Mode = SPI_Mode_Master;        //ÉèÖÃSPI¹¤×÷ģʽ:ÉèÖÃΪÖ÷SPISPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;        //ÉèÖÃSPIµÄÊý¾Ý´óС:SPI·¢ËͽÓÊÕ8λ֡½á¹¹SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;        //´®ÐÐͬ²½Ê±ÖӵĿÕÏÐ״̬ΪµÍµçƽSPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;    //´®ÐÐͬ²½Ê±Öӵĵڶþ¸öÌø±äÑØ£¨ÉÏÉý»òϽµ£©Êý¾Ý±»²ÉÑùSPI_InitStructure.SPI_NSS = SPI_NSS_Soft;        //NSSÐźÅÓÉÓ²¼þ£¨NSS¹Ü½Å£©»¹ÊÇÈí¼þ£¨Ê¹ÓÃSSI룩¹ÜÀí:ÄÚ²¿NSSÐźÅÓÐSSIλ¿ØÖÆSPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;        //¶¨Ò岨ÌØÂÊÔ¤·ÖƵµÄÖµ:²¨ÌØÂÊÔ¤·ÖƵֵΪ256SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;    //Ö¸¶¨Êý¾Ý´«Êä´ÓMSBλ»¹ÊÇLSBλ¿ªÊ¼:Êý¾Ý´«Êä´ÓMSBλ¿ªÊ¼SPI_InitStructure.SPI_CRCPolynomial = 7;    //CRCÖµ¼ÆËãµÄ¶àÏîʽSPI_Init(SPI1, &SPI_InitStructure);  //¸ù¾ÝSPI_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèSPIx¼Ä´æÆ÷
 SPI_Cmd(SPI1, ENABLE); //ʹÄÜSPIÍâÉè
}//³õʼ»¯ADS1256 GPIO
void Init_ADS1256_GPIO(void)
{GPIO_InitTypeDef GPIO_InitStructure; RCC -> AHB1ENR |= (1<<1);    //PB
    GPIO_InitStructure.GPIO_Pin = GPIO_RCC_ADS1256Reset|GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIO_RCC_ADS1256Reset_PORT, &GPIO_InitStructure);  GPIO_ResetBits(GPIO_RCC_ADS1256Reset_PORT, GPIO_RCC_ADS1256Reset );GPIO_InitStructure.GPIO_Pin = GPIO_ADS1256DRDY; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIO_ADS1256DRDY_PORT, &GPIO_InitStructure);  SPI1_Init();
}//-----------------------------------------------------------------//
//    ¹¦    ÄÜ£º  Ä£ÄâSPIͨÐÅ
//    Èë¿Ú²ÎÊý: /    ·¢Ë͵ÄSPIÊý¾Ý
//    ³ö¿Ú²ÎÊý: /    ½ÓÊÕµÄSPIÊý¾Ý
//    È«¾Ö±äÁ¿: /
//    ±¸    ×¢:     ·¢ËͽÓÊÕº¯Êý
//-----------------------------------------------------------------//
unsigned char SPI_WriteByte(unsigned char TxData)
{     while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET){}//µÈ´ý·¢ËÍÇø¿Õ
    SPI_I2S_SendData(SPI1, TxData); //ͨ¹ýÍâÉèSPIx·¢ËÍÒ»¸öbyte  Êý¾Ýwhile (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){} //µÈ´ý½ÓÊÕÍêÒ»¸öbyte  return SPI_I2S_ReceiveData(SPI1); //·µ»Øͨ¹ýSPIx×î½ü½ÓÊÕµÄÊý¾Ý    

} //-----------------------------------------------------------------//
//    ¹¦    ÄÜ£ºADS1256 дÊý¾Ý
//    Èë¿Ú²ÎÊý: /
//    ³ö¿Ú²ÎÊý: /
//    È«¾Ö±äÁ¿: /
//    ±¸    ×¢: ÏòADS1256ÖеØַΪregaddrµÄ¼Ä´æÆ÷дÈëÒ»¸ö×Ö½Údatabyte
//-----------------------------------------------------------------//
void ADS1256WREG(unsigned char regaddr,unsigned char databyte)
{GPIO_ResetBits(GPIOB, GPIO_Pin_6);while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));//µ±ADS1256_DRDYΪµÍʱ²ÅÄÜд¼Ä´æÆ÷//Ïò¼Ä´æÆ÷дÈëÊý¾ÝµØÖ·SPI_WriteByte(ADS1256_CMD_WREG | (regaddr & 0x0F));//дÈëÊý¾ÝµÄ¸öÊýn-1SPI_WriteByte(0x00);//ÏòregaddrµØÖ·Ö¸ÏòµÄ¼Ä´æÆ÷дÈëÊý¾Ýdatabyte
    SPI_WriteByte(databyte);delay_us(1);GPIO_SetBits(GPIOB, GPIO_Pin_6);
}//³õʼ»¯ADS1256
void ADS1256_Init(void)
{Init_ADS1256_GPIO();GPIO_ResetBits(GPIOB, GPIO_Pin_7);  delay_us(50);GPIO_SetBits(GPIOB, GPIO_Pin_7);//RESETdelay_us(50);    GPIO_ResetBits(GPIOB, GPIO_Pin_6);//CSADS1256WREG(ADS1256_STATUS,0x06);  // ¸ßλÔÚÇ°¡¢Ð£×¼¡¢Ê¹Óûº³åwhile(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));SPI_WriteByte(ADS1256_CMD_SELFCAL);//Æ«ÒÆÔöÒæ×ÔУ׼
//    ADS1256WREG(ADS1256_MUX,0x08);                  // ³õʼ»¯¶Ë¿ÚA0Ϊ¡®+¡¯£¬AINCOMλ¡®-¡¯
//    while(GPIO_ReadInputDataBit(GPIO_ADS1256DRDY_PORT,GPIO_ADS1256DRDY));ADS1256WREG(ADS1256_ADCON,0);   // ·Å´ó±¶Êý1ADS1256WREG(ADS1256_DRATE,ADS1256_DRATE_15000SPS);  // Êý¾Ý5spsADS1256WREG(ADS1256_IO,0x00); GPIO_SetBits(GPIOB, GPIO_Pin_6);
}

转载于:https://www.cnblogs.com/calm-monkey/p/11369858.html

2019 8 9 STM32F407ADS1526连续转换模式相关配置(采样率达到15000SPS)相关推荐

  1. Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 Nginx防盗链配置需要与不记录日志和过期时间结合在一起,因为都用到了location. 打开配置文件,注释 ...

  2. LNMP架构php-fpm相关配置

    2019独角兽企业重金招聘Python工程师标准>>> 11月30日任务 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_based ...

  3. 限制php解析、user_agent、php相关配置

    2019独角兽企业重金招聘Python工程师标准>>> 11月20日任务 11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31 php ...

  4. Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问. ...

  5. 禁止解析PHP、限制user_agent、php相关配置

    2019独角兽企业重金招聘Python工程师标准>>> 11.28 限定某个目录禁止解析php 核心配置文件内容 <Directory /data/wwwroot/www.12 ...

  6. (八)限定某个目录禁止解析php、限制user_agent和PHP相关配置

    2019独角兽企业重金招聘Python工程师标准>>> 限定某个目录禁止解析php 对于使用php语言编写的网站,有一些目录是有需求上传文件的.如果网站代码有漏洞,让黑客上传了一个用 ...

  7. LAMP架构(八)限定某个目录禁止解析、 限制user_agent、php相关配置

    2019独角兽企业重金招聘Python工程师标准>>> 访问控制-限制某个目录禁止php解析 一般用于存储静态文件的目录,因为图片等之类的文件是不需要解析PHP的,且静态文件目录也不 ...

  8. Android学习之登陆界面设计(一)前后期准备以及相关配置

    Android学习之登陆界面设计(一)前后期准备以及相关配置 前言 成品 成品样式 成品特点 工具 系统配置 手机配置 Android Studio 3.6.3 SDK 图片来源 矢量图标库 Back ...

  9. nginx的全局配置和HTTP相关配置

    目录 资源类型: 网站访问量 网站访问量统计的重要指标 HTTP1.0和1.1的问题 HTTP2协议 HTTP 请求访问的完整过程 HTTP 请求报文 http协议状态码分类 http协议常用的!!状 ...

  10. HAL ADC连续转换模式 Continuous Conversion Mode

    在学习Continuous Conversion Mode时,根据网上的例程和配置,我发现Continuous Conversion Mode ENABLE 和DISABLE输出结果好像没有区别.后来 ...

最新文章

  1. unused import statement
  2. c# 爬虫 -ChromeDriver+HtmlAgilityPack爬取比赛实时比分
  3. tls1.1 tls1.2_Java 8将默认使用传输级别安全性(TLS)1.2
  4. spring基于注释的配置_基于注释的Spring MVC Web应用程序入门
  5. warning C4828问题的处理
  6. IDEA创建.properties文件
  7. Zookeeper权限控制ACL详解
  8. zoj 3211 - Dream City
  9. javascrip 的数据类型
  10. [CC-CHEFINV]Chef and Swaps
  11. XILINX FPGA数字信号处理——2、数字信号处理实现方法
  12. 好课推荐|云安全领域的新宠CCSK
  13. 中国矿业大学计算机学院进复试,拟录取名单陆续公布!初试第二败北,倒数第一逆袭!...
  14. 设置word页面为绿色
  15. TensorFlow Objection Detection API使用教程
  16. 怎么翻译图片上的英文?图片翻译英文方法分享。
  17. Win10 功能大全
  18. mysql里面除号写法_Mysql之常见函数
  19. 记一次idea莫名其妙报错找不到依赖问题
  20. 自定义实现webpack插件原理解析

热门文章

  1. EPON+EOC 大批量设备网管解决方案
  2. 用Python发送微信消息给好友
  3. 新加坡读计算机专业,【去新加坡读计算机专业】 - 环外新加坡留学网
  4. PIXEL-LEVEL SELF-PACED LEARNING FOR SUPER-RESOLUTION
  5. shell中用grep查找并且不输出_grep无法查找shell传过来的变量?先注意一下文本格式吧!...
  6. 关于类unix系统(linux,bsd等)克隆的资料-2
  7. 帝国cms tag生成html,帝国CMS TAG标签伪静态化
  8. mac系统通过ADB与scrcpy实现手机投屏
  9. pale moon 最新版中文包安装方法
  10. android实现记事本app