你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3292|回复: 9

[STM32F446] cubeMAX配置双通道ADC+dma(一)

[复制链接]

52

主题

3313

回帖

61

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2018-11-12 10:59:43 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 2018-11-12 10:58 编辑

      因为最近的项目要采集调制解调的IQ两路信号,并且进行FFT处理,刚好手边有块NUCELO F446RE,看了下配置180 MHz主频、512 KB闪存、128 KB的SRAM,有FPU单元,可以更好的进行FFT运算,于是就拿这块板子来开发。
中间走了很多弯路,不过最后还是顺利搞定了,所以还是写个贴子,免得以后再走弯路。
      首先,打开cubeMAX先建工程,选择对应板卡,这里点选yes
Snipaste_2018-11-10_15-24-01.png
会自动配置好nucleo板子的串口、LED、按键、调试口,这样可以直接使用板载资源了。
然后进时钟,直接跑到最高频率,180MHz
Snipaste_2018-11-10_15-30-20.png


因为需要两路AD,这里选择了AD1的通道10和11,因为刚好对应板子的PC0、PC1,刚好在板载的最左下角。
Snipaste_2018-11-10_15-31-53.png


再配置ADC,需要设置的参数比较多。

Snipaste_2018-11-10_15-51-03.png

这里主要注意Scan Conversion Mode和Continuous Conversion Mode这个组合:
Scan=0,Con=0,是单次单通道转换;
Scan=0,Con=1,是连续单通道转换;
Scan=1,Con=0,是单次序列通道转换;
Scan=1,Con=1,是连续序列通道转换。
STM32的AD组合能说是相当的丰富,这还只是单ADC,这里就不展开了。其它的参数都很好配置,DMA连续请求,配置两个对应通道。配置完成后,使能DMA中断
Snipaste_2018-11-10_15-56-57.png
Snipaste_2018-11-10_15-57-49.png


模式选择循环转换模式,数据类型选字类型。到这就配置完成了,就可以生成工程了。
这里建议把这个勾选上,不然到后面,main文件实在是太大了
Snipaste_2018-11-10_20-22-58.png

到此为止,ADC和DMA就配置好了,不过为了直观的观察结果,还得把串口调通,因为之前cubeMAX已经配置了nucleo默认的串口,所以这里可以直接使用,但是要重定向一下,重定向有两个函数
#ifdef __GNUC__  
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
#else  
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
#endif /* __GNUC__ */  

PUTCHAR_PROTOTYPE  
{  
  HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0x0001);  
  return ch;  
}  
或者
#pragma import(__use_no_semihosting)                             
struct __FILE {
    int handle;
};

FILE __stdout;         
void _sys_exit(int x)
{
        x = x;
}

int fputc(int ch, FILE *f){      
    while((USART2->SR&0X40)==0);
    USART2->DR = (uint8_t) ch;      
    return ch;
}
推荐后者,前者需要使用微库,不然会循环卡死
Snipaste_2018-11-10_20-28-28.png

最后启动AD

HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value, 240);
因为实际需要240个采样点,所以参数是240。最后串口打印结果
Snipaste_2018-11-10_20-33-39.png


到这就实现了最初的ADC采集目的。

<
回复

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2020-7-22
发表于 2019-4-9 17:45:49 | 显示全部楼层
你确定 "Data Width "选项是Word?我AD一直选的HalfWord
回复 支持 反对

使用道具 举报

48

主题

3559

回帖

429

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2019-4-9 18:51:40 | 显示全部楼层
nasty-2024300 发表于 2019-4-9 17:45
你确定 "Data Width "选项是Word?我AD一直选的HalfWord

标准套路应该选HalfWord。
但是用Word也不见得有问题,F466的ADC_DR寄存器高16位无效,只低16位有用。
本来外设和内存都用一个HalfWord就够了,用Word无非是浪费一点点内存资源。
回复 支持 反对

使用道具 举报

52

主题

3313

回帖

61

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2019-4-9 21:07:45 | 显示全部楼层
toofree 发表于 2019-4-9 18:51
标准套路应该选HalfWord。
但是用Word也不见得有问题,F466的ADC_DR寄存器高16位无效,只低16位有用。
本 ...

哈哈,你只考虑了AD长度,在我这个工程里用Word肯定没错,half Word倒是不一定没错。关于这个参数,论坛说的很多了,其实到底怎么选,是由库决定的,借用别人总结的一句话“你只需要关心数据要存放的起始地址、自己每次搬运数据的宽度、单轮循环搬运的次数”就够了
回复 支持 反对

使用道具 举报

52

主题

3313

回帖

61

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2019-4-9 21:10:58 | 显示全部楼层
nasty-2024300 发表于 2019-4-9 17:45
你确定 "Data Width "选项是Word?我AD一直选的HalfWord

我不确定,你只要确定你的最后结果是对的就行了,如果参数唯一的,CubeMX就不用让你选择了
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2020-7-22
发表于 2019-4-10 10:20:56 | 显示全部楼层
楼主有没有PWM 控制采样频率,ADC双通道+DMA传输模式的Demo?有的话可以共享一下吗?还有 Normal 和 Circular 模式有什么区别。我昨天测试ADC单通道+DMA采集用的是Normal模式,看了一下AD采集的波形是正确的
回复 支持 反对

使用道具 举报

52

主题

3313

回帖

61

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2019-4-10 21:20:14 | 显示全部楼层
nasty-2024300 发表于 2019-4-10 10:20
楼主有没有PWM 控制采样频率,ADC双通道+DMA传输模式的Demo?有的话可以共享一下吗?还有 Normal 和 Circula ...

Snipaste_2019-04-10_21-02-12.png

多看手册,每个参数都有很详细的描述。并且也是最准确和正确的来源。简单来说,Normal模式下,接收满了,就停止,不再搬运,下次要接收,就得继续调用;而Circular模式下,会一直搬运下去。既然你都确定波形是对的,那就不要怀疑你的对错了。还有看来手册也不太懂参数什么意义的时候,可以自己测试看看啊,改改参数跑一跑,只要没不是最后的产品烧写版本,你都可以随便试,试了更加加深印象
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2020-7-22
发表于 2019-4-11 14:49:17 | 显示全部楼层
受教了,谢谢楼主!
回复 支持 反对

使用道具 举报

0

主题

87

回帖

0

蝴蝶豆

初级会员

最后登录
2019-12-8
发表于 2019-4-18 01:17:11 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

6

主题

930

回帖

133

蝴蝶豆

金牌会员

最后登录
2020-12-9
发表于 2019-4-18 10:19:34 | 显示全部楼层
收藏,多谢楼主,一直没搞清楚
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版