串行模式、同步采样
2022-01-19 09:06:23 9.75MB 单片机ADC
1
【工控老马出品,必属精品,质量保证,亲测能用】 资源名:步进电机STM32控制源码(加减速、精准定位脉冲、自由调速) 资源类型:程序源代码 源码说明: 非常流行的步进电机STM32控制代码,S型加减速,启动加速和停止减速可以不同,完成满足各种不同需要,代码中可以随时获取电机已走脉冲(实际就是当前位置),类似PLC中的脉冲计数器,代码的执行效率比DMA方式的还高,基本不占用CPU资源,可以说是非常精典的资料!! 适合人群:新手及有一定经验的开发人员
基于STM32F407通过I2C驱动片外RTC时钟电路-嵌入式源码
2022-01-17 19:04:46 1KB rtc 嵌入式
1
基于STM32的ADC实验(单通道)
2022-01-16 23:48:02 3.13MB STM32 ADC采样 单通道
1
STM32F429单片机读写(8通道16位同步ADC)AD7606 spi模式软件工程源码, void Demo_spi_AD7606(void) { uint8_t cmd; /* 由于ST固件库的启动文件已经执行了CPU系统时钟的初始化,所以不必再次重复配置系统时钟。 启动文件配置了CPU主时钟频率、内部Flash访问速度和可选的外部SRAM FSMC初始化。 */ g_tAD7606.Range = 1; /* 10V */ bsp_spi_InitAD7606(); /* 配置AD7606所用的GPIO */ bsp_StartAutoTimer(0, 500); /* 启动1个500ms的自动重装的定时器 */ DispMenu(); /* 显示操作菜单 */ while (1) { bsp_Idle(); /* 空闲时执行的函数,比如喂狗. 在bsp.c中 */ if (bsp_CheckTimer(0)) { /* 每隔500ms 进来一次. 由软件启动转换 */ AD7606_Scan(); /* 处理数据 */ AD7606_Mak(); /* 打印ADC采样结果 */ AD7606_Disp(); } if (comGetChar(COM1, &cmd)) /* 从串口读入一个字符(非阻塞方式) */ { switch (cmd) { case '1': if (g_tAD7606.Range == 0) { g_tAD7606.Range = 1; } else { g_tAD7606.Range = 0; } AD7606_SetInputRange(g_tAD7606.Range); break; default: DispMenu(); /* 无效命令,重新打印命令提示 */ break; } } } }
STM32单片机(STM32F429)读写(8通道带PGA的24位ADC)ADS1256软件例程源码,可以做为你的学习设计参考。 int main(void) { uint8_t i; bsp_Init(); PrintfLogo(); /* 打印例程Logo到串口1 */ bsp_DelayMS(100); /* 等待上电稳定,等基准电压电路稳定, bsp_InitADS1256() 内部会进行自校准 */ bsp_InitADS1256(); /* 初始化配置ADS1256. PGA=1, DRATE=30KSPS, BUFEN=1, 输入正负5V */ /* 打印芯片ID (通过读ID可以判断硬件接口是否正常) , 正常时状态寄存器的高4bit = 3 */ #if 0 { uint8_t id; id = ADS1256_ReadChipID(); if (id != 3) { printf("Error, ASD1256 Chip ID = 0x%X\r\n", id); } else { printf("Ok, ASD1256 Chip ID = 0x%X\r\n", id); } } #endif ADS1256_CfgADC(ADS1256_GAIN_1, ADS1256_30SPS); /* 配置ADC参数: 增益1:1, 数据输出速率 1KHz */ ADS1256_StartScan(); /* 启动中断扫描模式, 轮流采集8个通道的ADC数据. 通过 ADS1256_GetAdc() 函数来读取这些数据 */ while (1) { bsp_Idle(); /* 空闲时执行的函数,比如喂狗. 在bsp.c中 */ /* 打印采集数据 */ for (i = 0; i < 8; i++) { int32_t iTemp; iTemp = ((int64_t)g_tADS1256.AdcNow[i] * 2500000) / 4194303; /* 计算实际电压值(近似估算的),如需准确,请进行校准 */ if (iTemp < 0) { iTemp = -iTemp; printf("%d=%6d,(-%d.%03d %03d V) ", i, g_tADS1256.AdcNow[i], iTemp /1000000, (iTemp%1000000)/1000, iTemp%1000); } else { printf("%d=%6d,( %d.%03d %03d V) ", i, g_tADS1256.AdcNow[i], iTemp/1000000, (iTemp%1000000)/1000, iTemp%1000); } } printf("\r\n"); bsp_DelayMS(500); /* 每隔500ms 输出一次数据 */ } }
基于STM32F1adc模拟看门狗,可以设置ADC上下阈值,实时监控ADC采样数值。超出阈值范围触发中断
2022-01-15 14:57:19 2.03MB stm32 ADC看门狗 模拟看门狗 ADC
1
STM32单片机读写(8通道16位同步ADC)AD7606软件驱动例程源码,可做为你的学习设计参考。 本例程演示如何读取AD7606的采集数据。 K1键 : 切换量程(5V或10V) K2键 : 进入FIFO工作模式 K3键 : 进入软件定时采集模式 摇杆上下键 : 调节过采样参数 ----- 将模拟输入接地时,采样值是0左右; ----- 模拟输入端悬空时,采样值在 11600 左右浮动(这是正常的,这是AD7606内部输入电阻导致的浮动电压) AD7606底层驱动文件是 : bsp_ad7606.c 出厂的AD7606模块缺省是8080 并行接口。如果用SPI接口模式,需要修改 R1 R2电阻配置。 AD7606模块接到STM32F4的FSMC总线。 AD7606 的配置很简单,它没有内部寄存器。量程范围和过采样参数是通过外部IO控制的。 采样速率由MCU或DSP提供的脉冲频率控制。 配置CVA CVB 引脚为PWM输出模式,周期设置为需要的采样频率; ---> 之后MCU将产生周期非常稳定的AD转换信号 将BUSY口线设置为中断下降沿触发模式; 外部中断ISR程序 { 中断入口; 读取8个通道的采样结果保存到RAM; 中断返回; }
STM32单片机读写2通道带PGA16位ADC-AD7705软件例程源码,可以做为你的学习设计参考。 int main(void) { uint16_t adc1, adc2; /* 由于ST固件库的启动文件已经执行了CPU系统时钟的初始化,所以不必再次重复配置系统时钟。 启动文件配置了CPU主时钟频率、内部Flash访问速度和可选的外部SRAM FSMC初始化。 系统时钟缺省配置为72MHz,如果需要更改,可以修改: \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c 中配置系统时钟的宏。 */ bsp_Init(); PrintfLogo(); /* 打印例程Logo到串口1 */ bsp_InitTM7705(); /* 初始化配置TM7705 */ if (g_TM7705_OK == 0) { printf("未检测到 AD7705\r\n"); } else { printf("已检测到 AD7705\r\n"); TM7705_CalibSelf(1); /* 自校准。执行时间较长,约180ms */ adc1 = TM7705_ReadAdc(1); TM7705_CalibSelf(2); /* 自校准。执行时间较长,约180ms */ adc2 = TM7705_ReadAdc(2); } while (1) { bsp_Idle(); /* 空闲时执行的函数,比如喂狗. 在bsp.c中 */ TM7705_Scan2(); /* 扫描两个个ADC通道, 无等待的 */ { /* 读取扫描结果 (结果定时读取即可) */ adc1 = TM7705_GetAdc1(); adc2 = TM7705_GetAdc2(); /* 打印采集数据 */ { int volt1, volt2; /* 计算实际电压值(近似估算的),如需准确,请进行校准 */ volt1 = (adc1 * 5000) / 65535; volt2 = (adc2 * 5000) / 65535; printf("CH1=%5d (%5dmV) CH2=%5d (%5dmV)\r", adc1, volt1, adc2, volt2); } } } }
单片机C语言实例--260-RTC实时时钟DS1302液晶显示.zip
2022-01-13 16:02:35 38KB 资料