打印
[MM32软件]

ADC有特色的超值MM32F0010

[复制链接]
1313|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxz600408|  楼主 | 2021-2-2 13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lxz600408 于 2021-2-23 22:59 编辑

初用一元的MM32F0010,在ADC使用2个通道连续扫描,一个通道做窗口比较,很省心。不象32F030的要用到DMA。该芯片直接读用到的通道数据即可。厂家提拱的reg_xxx.h很暖心,对我们这些英文不好的人来说,看数据手册对照下就知道怎么写;下面是测试2路实时温度初始化实例:
void ADC1_Configuration(void)
{
  RCC->APB1RSTR |= RCC_APB1RSTR_ADC1; //ADC1 reset
  RCC->APB1RSTR &= ~(RCC_APB1RSTR_ADC1); //reset end//12位有效/右对齐/窗口比较通道选择0/  
  ADC1->ADCFG |= ADC_CFGR_PRE_16//ADC 预分频
    |ADC_CFGR_SAMCTL_71_5// 选择通道x 的采样时间
      //|ADC_CFGR_RSLTCTL_8 //转换数据分辨     
          |ADC_CFGR_ADWEN;//窗口比较器使能
            //|ADC_CFGR_VEN//内部参考电压使能
  ADC1->ADCR |= ADC_CR_CONTINUE  //连续扫描
    |ADC_CR_TRG_EDGE_MASK;//11: 屏蔽触发
  ADC1->ADCMPR=0X08fa0389;//32BIT 窗口比较寄存器 H=2.8v  L=1.1v                                   
  ADC1->CHANY0 = (u32)0X00000056;     //chennl 0=AIN6;chennl 1=AIN5;对应读ADDR6,ADDR5
  ADC1->ANYCFG |= 1; //通道数配置 0-1   
  ADC1->ANYCR |= ADC1_CHANY_CR_MDEN;//使能任意通道控制寄存器
  ADC1->ADCFG |= ADC_CFGR_ADEN;//A/D 转换使能
  __NOP();
  ADC1->ADCR |= ADC_CR_ADST;   //Start Conversion
}

使用特权

评论回复
沙发
zhu^zhu| | 2021-2-3 13:41 | 只看该作者
有DMA的话会更好!

使用特权

评论回复
板凳
单片小菜| | 2021-2-4 12:03 | 只看该作者
还是习惯于使用dma的。

使用特权

评论回复
地板
里面有晴雨| | 2021-2-5 09:22 | 只看该作者
还是喜欢用DMA的功能,如果有的话,最好不过了。

使用特权

评论回复
5
zhu^zhu| | 2021-2-5 11:08 | 只看该作者
缺少了DMA功能,1M转换率的ADC的性能是不能得到发挥的。前提不是为测试而测试,而是在产品的实际应用程序中!

使用特权

评论回复
6
wziyi| | 2021-2-8 18:54 | 只看该作者
全中文的文档是真心不错的

使用特权

评论回复
7
lxz600408|  楼主 | 2021-2-15 19:49 | 只看该作者
本帖最后由 lxz600408 于 2021-2-15 19:55 编辑

干嘛还用DMA?比DMA更爽。直接读所用通道就可以了.下面是迪文串口指令屏用到的测试程序
for(i=0;i<10;i++){
        k=*(__IO u32*)(0x40012400+0X18+4*i); //i通道        
        sta_Putstr(i*50,100,0,3);//帧头+指令//串口屏
        Send_ascii(k);//串口屏显示通道读数
}

使用特权

评论回复
8
zhu^zhu| | 2021-2-17 00:24 | 只看该作者
lxz600408 发表于 2021-2-15 19:49
干嘛还用DMA?比DMA更爽。直接读所用通道就可以了.下面是迪文串口指令屏用到的测试程序
for(i=0;i ...

当1MSPS连续采样时您也直读?程序应用中只采集ADC转换结果,不做其它的计算、控制、操作吗?

使用特权

评论回复
9
zhu^zhu| | 2021-2-17 11:28 | 只看该作者
当1MSPS连续采样时您也直读?程序应用中只采集ADC转换结果,不做其它的计算、控制、操作吗?

使用特权

评论回复
10
里面有晴雨| | 2021-2-19 11:12 | 只看该作者
灵动微什么时候有带DMA功能的MCU?

使用特权

评论回复
11
zhu^zhu| | 2021-2-19 16:14 | 只看该作者
就MM32F0010来说,片内没有DMA模块。

使用特权

评论回复
12
数据采集存储| | 2021-2-19 18:56 | 只看该作者
如果有DMA,就太棒了,太棒了。

使用特权

评论回复
评论
zhu^zhu 2021-2-19 19:45 回复TA
我是工程师,在很多场合及很多应用中如果没有DMA,对程序编写及性能会大打折扣! 
13
lxz600408|  楼主 | 2021-2-21 17:47 | 只看该作者
本帖最后由 lxz600408 于 2021-2-21 17:49 编辑
zhu^zhu 发表于 2021-2-17 11:28
当1MSPS连续采样时您也直读?程序应用中只采集ADC转换结果,不做其它的计算、控制、操作吗? ...

实时扫描更新的,这些个数据寄存器等较于DMA传送目标寄存器,与DMA功能一样。仔细去看数据手册

使用特权

评论回复
14
zhu^zhu| | 2021-2-21 19:58 | 只看该作者
lxz600408 发表于 2021-2-21 17:47
实时扫描更新的,这些个数据寄存器等较于DMA传送目标寄存器,与DMA功能一样。仔细去看数据手册 ...

硬件已经固定下来,软件怎样编写?查询?中断?比如当要求转换率大于500Kpsp时,采样中断方式就把MCU的资源快给占满了,那剩下的你只有采样查询方式,一个高速的Core与一个1/40-1/80的外设去匹配,那只有是高手您了!

使用特权

评论回复
15
lxz600408|  楼主 | 2021-2-23 22:56 | 只看该作者
本帖最后由 lxz600408 于 2021-2-23 23:07 编辑
zhu^zhu 发表于 2021-2-21 19:58
硬件已经固定下来,软件怎样编写?查询?中断?比如当要求转换率大于500Kpsp时,采样中断方式就把MCU的资 ...

在DMA缓存每路分别各只应用一个内存地址时等效;一块钱的芯片有这功能不错了

使用特权

评论回复
16
zhu^zhu| | 2021-2-24 10:59 | 只看该作者
lxz600408 发表于 2021-2-23 22:56
在DMA缓存每路分别各只应用一个内存地址时等效;一块钱的芯片有这功能不错了 ...

问题是有DMA更好,没有DMA在高速转换时有很大的不足,会出现丢数的可能出现。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

34

帖子

1

粉丝