这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » sacq的ARM DIY进程贴(手绘波形发生器 视频 HEX码)

共284条 22/29 |‹ 20 21 22 23 24 25 ›| 跳转至
高工
2012-05-27 11:49:42     打赏
211楼
LCD,SRAM同时存在,貌似问题不大,现在测试情况并不乐观,可能还需修炼时日。现状:





开始测试后,LCD显示未继续更新,串口也没发出消息,不知停在里面何处,或程序问题,没有给出结果。

高工
2012-05-27 12:30:54     打赏
212楼
你的sram程序放在lcd后边吧?sram初始化程序把lcd程序给冲掉了,应该会进hardfault!两个顺序换换,你会发现sram能读写lcd却不行

高工
2012-05-27 12:46:16     打赏
213楼

为了测试,现在LCD前后都放了,不知过了多长时间,怪了。。。


高工
2012-05-27 13:04:04     打赏
214楼

明显的,SRAM读写速度慢了很多(有点无法容忍了),具体到使用时还要再找找原因了。


高工
2012-05-27 13:05:43     打赏
215楼
一点都不奇怪,你看看lcd和sram的数据引脚。你应该初始化了两次,还开了sram的afio时钟。

高工
2012-05-27 13:13:09     打赏
216楼
有道理。休息一下,回头再看

高工
2012-05-28 00:28:10     打赏
217楼

 DAC的实验 (输出正弦波)

没有示波器,是不是有说不清的感觉.

DAC输出:PA4,PA5
输出波形:正弦波
幅值范围:0~3.3V

部分代码:

//32点的正弦波数据,从0~4095,如需要可以再加密:

const uint16_t Sine12bit[32] = {
                      2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 4056,
                      3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909,
                      599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647};

//外设的种类动用了不少:

/* Enable peripheral clocks --------------------------------------------------*/
  /* DMA clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
  /* GPIOA Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  /* DAC Periph clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
  /* TIM2 Periph clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

// 主程序,搞定了定时器,DMA,让它自己跑去吧:

  /* TIM2 Configuration */
  /* Time base configuration */
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Period = 0x19;         
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;      
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  /* TIM2 TRGO selection */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

  /* DAC channel1 Configuration */
  DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);

  /* DAC channel2 Configuration */
  DAC_Init(DAC_Channel_2, &DAC_InitStructure);

  /* Fill Sine32bit table */
  for (Idx = 0; Idx < 32; Idx++)
  {
    DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
  }

  /* DMA2 channel4 configuration */
  DMA_DeInit(DMA2_Channel4);
  DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address;
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_InitStructure.DMA_BufferSize = 32;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(DMA2_Channel4, &DMA_InitStructure);

  /* Enable DMA2 Channel4 */
  DMA_Cmd(DMA2_Channel4, ENABLE);

  /* Enable DAC Channel1: Once the DAC channel1 is enabled, PA.04 is
     automatically connected to the DAC converter. */
  DAC_Cmd(DAC_Channel_1, ENABLE);
  /* Enable DAC Channel2: Once the DAC channel2 is enabled, PA.05 is
     automatically connected to the DAC converter. */
  DAC_Cmd(DAC_Channel_2, ENABLE);

  /* Enable DMA for DAC Channel2 */
  DAC_DMACmd(DAC_Channel_2, ENABLE);

  /* TIM2 enable counter */
  TIM_Cmd(TIM2, ENABLE);


没有示波器,用万用表的直流、交流可测PA4,PA5的电压,估计是有波形出来了。

具体实际波形,还等看楼下后续。


高工
2012-05-28 00:29:27     打赏
218楼
DAC可以输出指定的值,然后三用表测

高工
2012-05-28 00:32:38     打赏
219楼

这个自然,心中有数,我是特指“正弦波”


高工
2012-05-28 00:36:48     打赏
220楼
曾经有个串口示波器,不注册的话只有9600的波特率。我这也没有

共284条 22/29 |‹ 20 21 22 23 24 25 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]