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

STM8L151 ADC 定时器TRGO触发

[复制链接]
tanic 提问时间:2017-4-14 15:56 /
悬赏1ST金币未解决
本帖最后由 tanic 于 2017-5-5 17:10 编辑

0123456

收藏 1 评论10 发布时间:2017-4-14 15:56

举报

10个回答
tanic 回答时间:2017-4-14 16:23:58
本帖最后由 tanic 于 2017-5-5 17:00 编辑

我现在要做的是
系统时钟16M;
ADC用了5通道   采样率500Hz,开启一次采样采集100个数据
ADC时钟2分频  2M/2=1M    转换时间48Cycles,   0.48us *5=0.24us
DMA搬移数据
定时器500HZ  2ms触发一次。


tanic 回答时间:2017-4-14 16:26:33
本帖最后由 tanic 于 2017-5-5 16:59 编辑

/*系统时钟*/
static void CLK_Config(void)
{
  /* Select HSE as system clock source */
  CLK_SYSCLKSourceSwitchCmd(ENABLE);
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
  /*High speed external clock prescaler: 1*/
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);/*16M*/

  while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE)
  {}


/*TIM1*/
static void Timer1_Config()
{
  /*
  - TIM1CLK = 16 MHz
  - TIM1 counter clock = TIM1CLK / TIM1_PRESCALER+1 = 16 MHz/159+1 = 100kHz
  */
  /* Time base configuration */  CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);
  TIM1_TimeBaseInit(9, TIM1_CounterMode_Up, 199, 0);
}
tanic 回答时间:2017-4-14 16:27:45
本帖最后由 tanic 于 2017-5-5 17:11 编辑

/*ADC初始化*/
static void ADC_Config(void)
{
   /* Enable ADC1 clock */
   CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
  /* Initialize and configure ADC1
   */
  ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit, ADC_Prescaler_2);
  ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_48Cycles);
  ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels, ADC_SamplingTime_48Cycles);

  /* Enable ADC1 */
  ADC_Cmd(ADC1, ENABLE);
   /* Enable ADC1 Channels 7 */
  ADC_ChannelCmd(ADC1, ADC_Channel_7, ENABLE); /* connected to 通道5 */
  /* Enable ADC1 Channels 8 */
  ADC_ChannelCmd(ADC1, ADC_Channel_8, ENABLE); /* connected to 通道4 */
    /* Enable ADC1 Channels 9 */
  ADC_ChannelCmd(ADC1, ADC_Channel_9, ENABLE); /* connected to 通道3 */
  /* Enable ADC1 Channels 10 */
  ADC_ChannelCmd(ADC1, ADC_Channel_10, ENABLE); /* connected to 通道2 */
  /* Enable ADC1 Channels 24 */
  ADC_ChannelCmd(ADC1, ADC_Channel_24, ENABLE); /* connected to 通道1 */
}
tanic 回答时间:2017-4-14 16:28:41
#define ADC1_DR_ADDRESS        ((uint16_t)0x5344)
#define BUFFER_SIZE            ((uint8_t) SERSOR_MUN)
#define BUFFER_ADDRESS         ((uint16_t)(&Buffer))
/*DMA*/
static void DMA_Config(void)
{
    /* Enable DMA1 clock */
  CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);
  /* Connect ADC to DMA channel 0 */
  SYSCFG_REMAPDMAChannelConfig(REMAP_DMA1Channel_ADC1ToChannel0);

  DMA_Init(DMA1_Channel0, BUFFER_ADDRESS,
           ADC1_DR_ADDRESS,
           BUFFER_SIZE,
           DMA_DIR_PeripheralToMemory,
           DMA_Mode_Circular,
           DMA_MemoryIncMode_Inc,
           DMA_Priority_High,
           DMA_MemoryDataSize_HalfWord);

  /* DMA Channel0 enable */
  DMA_Cmd(DMA1_Channel0, ENABLE);

  /* Enable DMA1 channel0 Transfer complete interrupt */
  DMA_ITConfig(DMA1_Channel0, DMA_ITx_TC, ENABLE);

  /* DMA enable */
  DMA_GlobalCmd(ENABLE);
}
tanic 回答时间:2017-4-14 16:30:22
本帖最后由 tanic 于 2017-5-5 17:10 编辑

/*初始化*/
void ADC_DMA_Init()
{
        ADC_Config();
        DMA_Config();
        Timer1_Config();
        /* Enable ADC1 DMA requests*/
        ADC_DMACmd(ADC1, ENABLE);
        /* Start ADC1 Conversion using TIM1 TRGO*/
        ADC_ExternalTrigConfig(ADC1, ADC_ExtEventSelection_Trigger2,
                                                 ADC_ExtTRGSensitivity_Rising);
        
        /* Master Mode selection: Update event */
        TIM1_SelectOutputTrigger(TIM1_TRGOSource_Update);
        

//        TIM1_Cmd(ENABLE);

}
tanic 回答时间:2017-4-14 16:32:12
等硬件出来了试试,不知道有没有问题哎!
tanic 回答时间:2017-5-5 17:01:23
本帖最后由 tanic 于 2017-5-5 17:09 编辑

012345
tanic 回答时间:2017-5-5 17:04:26
本帖最后由 tanic 于 2017-5-5 17:09 编辑

调试通过
WOFY 回答时间:2017-7-12 13:02:15
请问一下楼主定时器这样配置不是8KHz吗?TIM1_TimeBaseInit(9, TIM1_CounterMode_Up, 199, 0);
怎么达到2ms触发一次呢?定时器触发与DMA_ADC有倍数关系吗?
还是跟这种方式有关?TIM1_SelectOutputTrigger(TIM1_TRGOSource_Update);
别人小白,想向楼主学习学习
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版