找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4800|回复: 5
打印 上一主题 下一主题
收起左侧

STM32驱动ADS1256程序,亲测可用

[复制链接]
跳转到指定楼层
楼主
ID:636709 发表于 2019-11-6 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
24位高精度DAC模块,ADS1256程序,亲测可用。用于高精度电压采集。

单片机源程序如下:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "stm32f10x.h"
  4. #include "stm32f10x_it.h"
  5. #include "io.h"
  6. #include "key.h"
  7. #include "usart.h"
  8. #include "adc.h"
  9. #include "delay.h"
  10. #include "timer.h"
  11. #include "ina219.h"


  12. unsigned long z1=0;

  13. char strg[8];
  14. float kk3;


  15. void NVIC_Configuration(void)
  16. {
  17.     NVIC_InitTypeDef NVIC_InitStructure;
  18.     /* Configure one bit for preemption priority */
  19.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  20.     /* Enable the UART4 Interrupt */
  21.     NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;
  22.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  23.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;
  24.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  25.     NVIC_Init(&NVIC_InitStructure);
  26.     /* Enable the UART5 Interrupt */
  27.     NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;
  28.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  29.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;
  30.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  31.     NVIC_Init(&NVIC_InitStructure);
  32.     //Enable DMA2 Channel3 Interrupt
  33. //    NVIC_InitStructure.NVIC_IRQChannel = DMA2_Channel3_IRQn;
  34. //    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  35. //    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  36. //    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  37. //    NVIC_Init(&NVIC_InitStructure);
  38. }

  39. void SysInit (void)
  40. {        
  41.         SystemInit();//系统时钟配置 配置为72MHZ
  42.         delay_init();//延时函数初始化
  43. //        IO_Init();
  44.         GPIO_init();
  45.         TIM2_Int_Init(9,719);//10Khz的计数频率,计数到10为1ms
  46.         TIM3_Int_Init(99,7199);//10Khz的计数频率,计数到100为10ms
  47.         Usart_Init();
  48.         NVIC_Configuration();
  49.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  50.         //Adc_Init();
  51.         //delay_ms(300);               
  52.   ADS1256_int();
  53. }

  54. int main(void)
  55. {        
  56.         SysInit();
  57.         Brake_On();
  58.         delay_ms(1000);
  59.         delay_ms(1000);
  60.         delay_ms(1000);//等待驱动器上电完成
  61. //        MotorHome();
  62. //        PowerOnMotorHome();
  63.         while(1)
  64.         {        
  65. //                 delay_ms(1000);               
  66. //     readad();
  67. //          z1=result;
  68. //     kk3=(z1-2560)*5.0/8388652;
  69. //                          
  70. //                sprintf(strg,"VALUE3=%.3f\r\n",kk3);
  71. //                Usart4_SendStr(strg);        
  72. //     z1=0;               
  73. //    delay_ms(1000);               
  74. //        
  75.                

  76.                 /*ScanKey();
  77.                 if(ucKeyEventFlag)
  78.                 {                                
  79.                         KeyEventProcess();
  80.                         ucKeyEventFlag=0;
  81.                 }
  82. //               
  83.                 if(!ESTOP()&&(!EstopFlag))
  84.                 {
  85.                         delay_ms(10);
  86.                         if(!ESTOP()&&(!EstopFlag))
  87.                         {                        
  88.                                 EstopFlag=1;
  89.                                 MotorStartFlag=0;
  90.         //                        TIMERCOUNTER_OFF();
  91. //                                delay_ms(1000);               
  92.                         }
  93.                 }
  94.                 else if(ESTOP() && EstopFlag)
  95.                 {               
  96.                         delay_ms(10);
  97.                         if(ESTOP() && EstopFlag)
  98.                         {
  99.                                 EstopFlag=0;
  100.                                 MotorHome();
  101.                         }
  102.                 }  */
  103.         }
  104. }
复制代码

所有资料51hei提供下载:
ADS1256电压测试板验证程序.7z (198.1 KB, 下载次数: 207)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:672518 发表于 2020-5-20 13:48 | 只看该作者
谢谢分享
回复

使用道具 举报

板凳
ID:861187 发表于 2020-12-16 10:49 | 只看该作者
为什么我这里接收不到信息,程序烧录没问题
回复

使用道具 举报

地板
ID:526058 发表于 2021-7-2 23:52 | 只看该作者
测试一下。有点乱。
回复

使用道具 举报

5#
ID:81196 发表于 2021-7-9 09:17 | 只看该作者
最近用多路的ADC高精度采集,正好这款芯片是个不好的选择.又多了一个选择.
回复

使用道具 举报

6#
ID:111875 发表于 2024-1-22 07:50 | 只看该作者
楼主你好,这个程序我下载好了,但是连接串口没任何反应,你有没有遇到过,崩溃了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表