智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1314|回复: 2
打印 上一主题 下一主题

[编程类] DAC 触发 DMA 传值的问题

[复制链接]

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
84
威望
43
贡献
29
兑换币
24
注册时间
2014-9-25
在线时间
6 小时
毕业学校
T大
跳转到指定楼层
1#
发表于 2014-9-25 21:15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
下面是我的代码,想请教一下,为什么DMA似乎没有工作呢?

  1. void pdb_init(void);
  2. void dac_init(void);
  3. void dma_L_init(void);
  4. void dma_H_init(void);
  5. void dac_isr(void);
  6. void delay(uint16);
  7. //变量定义
  8. PIT_InitTypeDef pit0_init_struct;
  9. DAC_InitTypeDef dac_init_struct;
  10. PDB_InitTypeDef pdb_init_struct;
  11. DMA_InitTypeDef dmaL_init_struct;
  12. DMA_InitTypeDef dmaH_init_struct;
  13. uint8 UP[32];
  14. uint8 UL[16];
  15. uint8 UH[16];
  16. uint16 U[16];
  17. uint16 T[16];
  18. uint16 M[16];
  19. uint16 V[32];
  20. uint8  VP[64];

  21. int count=0;
  22. volatile uint8_t * const DL =&(DAC0->DAT[0].DATL);
  23. volatile uint8_t * const DH =&(DAC0->DAT[0].DATH);
  24.    
  25.    
  26. void main (void)
  27. {
  28.   for(int i=0;i<16;i++){
  29.   V[i]=250*i;
  30.   }  
  31.   for(int i=16;i<32;i++)
  32.   {
  33.   V[i]=250*(32-i);
  34.   }
  35.   for(int i=0;i<32;i++){
  36.   VP[i*2]=V[i]&0x0FF;
  37.   VP[i*2+1]=(V[i] & 0xF00)>>8;
  38.   }  

  39. /*

  40.   for(int i=0;i<16;i++){
  41.   
  42.   T[i]=250*i;
  43.   M[i]=250*(16-i);
  44.   }
  45.   for(int i=0;i<16;i++)
  46. {              
  47.      U[i]=(uint16)(i*250);
  48.   }
  49.   for(int i=0;i<16;i++)
  50. {              
  51.      UL[i]=U[i]&0x0FF;
  52. }
  53.   for(int i=0;i<16;i++)
  54. {              
  55.      UH[i]=(U[i] & 0xF00)>>8;
  56. }
  57.   for(int i=0;i<32;i++)
  58. {           
  59.     UP[2*i]=UL[i];
  60.     UP[2*i+1]=UH[i];
  61. } */
  62. //初始化DAC
  63.   
  64. dac_init();
  65. LPLD_DAC_SetBufferData(DAC0,V, 16);
  66. dma_L_init();

  67. pdb_init();
  68. LPLD_PDB_SoftwareTrigger() ;

  69. // LPLD_PDB_SoftwareTrigger();
  70.   
  71. }

  72. void dac_init(void)
  73. {
  74.   //仅需初始化DAC通道即可
  75. dac_init_struct.DAC_Dacx = DAC0;
  76. dac_init_struct.DAC_BufferEnable=TRUE;
  77. dac_init_struct.DAC_BufferUpperLimit=16;
  78. dac_init_struct.DAC_DmaEnable=TRUE;
  79. dac_init_struct.DAC_ReadPointerTopIntEnable = TRUE;
  80. //dac_init_struct.DAC_ReadPointerTopIsr = dac_isr;
  81.   //此处值得商榷!
  82. LPLD_DAC_Init(dac_init_struct);
  83. LPLD_DAC_EnableIrq(dac_init_struct);
  84. }

  85. void pdb_init(void)
  86. {
  87.   pdb_init_struct.PDB_CounterPeriodUs=20000;
  88.   pdb_init_struct.PDB_TriggerInputSourceSel=TRIGGER_SOFTWARE;
  89.   pdb_init_struct.PDB_ContinuousModeEnable=TRUE;
  90.   pdb_init_struct.PDB_LoadModeSel = LOADMODE_0;
  91.   LPLD_PDB_Init(pdb_init_struct);
  92.   LPLD_PDB_DacTriggerCfg(DAC0,INT_TRIG_EN,2000);
  93. }


  94. /*
  95. * 延时函数
  96. */

  97. void dma_L_init(void){
  98. dmaL_init_struct.DMA_CHx=DMA_CH0;
  99. dmaL_init_struct.DMA_Req=DAC0_DMAREQ;
  100. dmaL_init_struct.DMA_MajorLoopCnt=2;
  101. dmaL_init_struct.DMA_MinorByteCnt = 32;
  102. dmaL_init_struct.DMA_SourceAddr=(uint32)&(VP[0]);
  103. dmaL_init_struct.DMA_SourceDataSize = DMA_SRC_8BIT;
  104. dmaL_init_struct.DMA_SourceAddrOffset=32;
  105. dmaL_init_struct.DMA_LastSourceAddrAdj=-64;
  106. dmaL_init_struct.DMA_DestAddr =(uint32)&(DAC0->DAT[0].DATL);
  107. dmaL_init_struct.DMA_DestAddrOffset=0;
  108. dmaL_init_struct.DMA_LastDestAddrAdj=-16;
  109. dmaL_init_struct.DMA_DestDataSize = DMA_DST_8BIT;
  110. dmaL_init_struct.DMA_AutoDisableReq = FALSE;
  111. LPLD_DMA_Init(dmaL_init_struct);
  112. LPLD_DMA_EnableReq(DMA_CH0);
  113. }
复制代码


回复

使用道具 举报

3

主题

505

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
16509

在线王奖章活跃会员奖章优秀会员奖章论坛元老奖章

威望
12263
贡献
3306
兑换币
947
注册时间
2014-5-27
在线时间
470 小时
2#
发表于 2014-9-25 22:01:24 | 只看该作者
回复

使用道具 举报

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
84
威望
43
贡献
29
兑换币
24
注册时间
2014-9-25
在线时间
6 小时
毕业学校
T大
3#
 楼主| 发表于 2014-9-26 18:34:31 | 只看该作者
whisker 发表于 2014-9-25 22:01

这是水经验的节奏么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 21:48 , Processed in 0.093796 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表