OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3648|回复: 1

DMA方式DAC正弦波输出

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2016-8-23
在线时间
5 小时
发表于 2016-8-23 13:12:12 | 显示全部楼层 |阅读模式
本帖最后由 86806 于 2016-8-23 13:47 编辑

原子好,逛咱们论坛好几年了,一直没注册,也感谢原子的无需注册也能下载的豁达,注册日,发个DAC例程分享下

本例程为汇编代码,权威指南上有详细指令解释,DMA的特点是无需CPU参与,一次初始化即可,即使debug断点调试也不影响正弦波输出

例程已实测,波形完整,寄存器直接操作,无需任何库



[mw_shl_code=asm,true]
DAC_CR_DMAEN1                   equ                12
DAC_CR_TSEL2                      equ                03
DAC_CR_TEN1                       equ                02
DAC_CR_BOFF1                     equ                01
DAC_CR_EN1                         equ                00

GPIOA_04_DAC_CH_01            equ                0x04
DAC_CH                               equ                DAC_DHR12R1
DAC_PPC                              equ                1000                ; Point Per Cycle
;-------------------------------------------------------------------

                        EXPORT                Drv_DAC
                        GET                DAC_TAB.s        
                        GET                ../Include.inc
                        
                        AREA                _Drv_DAC, Code, ReadOnly

Drv_DAC                  ldr                r0,=RCC        

                        ldr                r1,[r0,#RCC_AHBENR]
                        orr                r1,#(1<<DMA2EN)
                        str                r1,[r0,#RCC_AHBENR]

                        ldr                r1,[r0,#RCC_APB1ENR]                        ; 使能 DAC
                        ldr                r2,=(1<<DACENr:1<<TIM4EN)
                        orr                r1,r2
                        str                r1,[r0,#RCC_APB1ENR]

                        ldr                r1,[r0,#RCC_APB2ENR]                        ; 使能 PortA ,使能端口复用
                        orr                r1,#(1<<ORTAENr:1<<AFIOEN)
                        str                r1,[r0,#RCC_APB2ENR]

                        ldr                r0,=GPIOA                                ; 初始化DAC端口,PA4初始化为模拟口
                        ldr                r1,[r0,#GPIO_CRL]
                        bic                r1,#(0x0F<<GPIOA_04_DAC_CH_01 * 4)
                        orr                r1,#(GPIO_MODE_IN_AIN<<GPIOA_04_DAC_CH_01)
                        str                r1,[r0,#GPIO_CRL]

                        ldr                r0,=DAC
                        mov                r1,#(1<<DAC_CR_DMAEN1r:5<<DAC_CR_TSEL2r:1<<DAC_CR_TEN1r:1<<DAC_CR_EN1)
                        str                r1,[r0,#DAC_CR]

                        ldr                r0,=DMA2
                        mov                r1,#00                                        ; 初始化DMA接收
                        str                r1,[r0,#DMA_CCR3]
                        orr                r1,#(1<<IFCR_CGIF3r:1<<IFCR_CTCIF3r:1<<IFCR_CHTIF3r:1<<IFCR_CTEIF3)
                        str                r1,[r0,#DMA_IFCR]
                        mov                r1,#DAC_PPC
                        str                r1,[r0,#DMA_CNDTR3]
                        ldr                r1,=DAC_TAB_Sin_1000
                        str                r1,[r0,#DMA_CMAR3]
                        ldr                r1,=DAC + DAC_DHR12R1
                        str                r1,[r0,#DMA_CPAR3]
                        ldr                r1,=(1<<CCR_MSIZEr:1<<CCR_PSIZEr:1<<CCR_MINC:or:1<<CCR_CIRC:or:1<<CCR_DIR:or:1<<CCR_EN)
                        str                r1,[r0,#DMA_CCR3]                        ; 启动 DMA1_CH3 发送数据

                        ldr                r0,=TIM4
                        mov                r1,#(1<<0)                        
                        str                r1,[r0,#TIM_CR1]
                        mov                r1,#(02<<CR2_MMS)
                        str                r1,[r0,#TIM_CR2]
                        mov                r1,#00
                        str                r1,[r0,#TIM_SR]
                        str                r1,[r0,#TIM_CNT]
                        mov                r1,#72 - 1                                ; CLK_Max 72MHz
                        str                r1,[r0,#TIM_PSC]                        ; 分频系数,CK_CNT = Fck_psc / (PSC+1)
                        mov                r1,#19                                        ; unit:1us
                        str                r1,[r0,#TIM_ARR]

                        bx                lr
[/mw_shl_code]



以下为正弦波字表
[mw_shl_code=asm,true]
                        EXPORT                DAC_TAB_Sin_1000
                        AREA                _DAC_TAB, DATA, READONLY

DAC_TAB_Sin_1000        dcw                2047,2060,2073,2086,2098,2111,2124,2137,2150,2163

                        dcw                2176,2188,2201,2214,2227,2240,2252,2265,2278,2291

                        dcw                2304,2316,2329,2342,2355,2367,2380,2393,2405,2418

                        dcw                2431,2443,2456,2468,2481,2494,2506,2519,2531,2544

                        dcw                2556,2569,2581,2593,2606,2618,2630,2643,2655,2667

                        dcw                2680,2692,2704,2716,2728,2740,2752,2765,2777,2789

                        dcw                2801,2812,2824,2836,2848,2860,2872,2884,2895,2907

                        dcw                2919,2930,2942,2953,2965,2976,2988,2999,3011,3022

                        dcw                3033,3044,3056,3067,3078,3089,3100,3111,3122,3133

                        dcw                3144,3155,3165,3176,3187,3198,3208,3219,3229,3240

                        dcw                3250,3261,3271,3281,3291,3302,3312,3322,3332,3342

                        dcw                3352,3362,3372,3381,3391,3401,3410,3420,3429,3439

                        dcw                3448,3458,3467,3476,3485,3494,3504,3513,3521,3530

                        dcw                3539,3548,3557,3565,3574,3582,3591,3599,3608,3616

                        dcw                3624,3632,3641,3649,3657,3664,3672,3680,3688,3695

                        dcw                3703,3711,3718,3725,3733,3740,3747,3754,3761,3768

                        dcw                3775,3782,3789,3796,3802,3809,3815,3822,3828,3835

                        dcw                3841,3847,3853,3859,3865,3871,3877,3882,3888,3894

                        dcw                3899,3905,3910,3915,3920,3926,3931,3936,3941,3945

                        dcw                3950,3955,3960,3964,3969,3973,3977,3982,3986,3990

                        dcw                3994,3998,4002,4005,4009,4013,4016,4020,4023,4026

                        dcw                4030,4033,4036,4039,4042,4045,4047,4050,4053,4055

                        dcw                4058,4060,4062,4065,4067,4069,4071,4073,4074,4076

                        dcw                4078,4079,4081,4082,4084,4085,4086,4087,4088,4089

                        dcw                4090,4091,4091,4092,4093,4093,4093,4094,4094,4094

                        dcw                4094,4094,4094,4094,4093,4093,4093,4092,4091,4091

                        dcw                4090,4089,4088,4087,4086,4085,4084,4082,4081,4079

                        dcw                4078,4076,4074,4073,4071,4069,4067,4065,4062,4060

                        dcw                4058,4055,4053,4050,4047,4045,4042,4039,4036,4033

                        dcw                4030,4026,4023,4020,4016,4013,4009,4005,4002,3998

                        dcw                3994,3990,3986,3982,3977,3973,3969,3964,3960,3955

                        dcw                3950,3945,3941,3936,3931,3926,3920,3915,3910,3905

                        dcw                3899,3894,3888,3882,3877,3871,3865,3859,3853,3847

                        dcw                3841,3835,3828,3822,3815,3809,3802,3796,3789,3782

                        dcw                3775,3768,3761,3754,3747,3740,3733,3725,3718,3711

                        dcw                3703,3695,3688,3680,3672,3664,3657,3649,3641,3632

                        dcw                3624,3616,3608,3599,3591,3582,3574,3565,3557,3548

                        dcw                3539,3530,3521,3513,3504,3494,3485,3476,3467,3458

                        dcw                3448,3439,3429,3420,3410,3401,3391,3381,3372,3362

                        dcw                3352,3342,3332,3322,3312,3302,3291,3281,3271,3261

                        dcw                3250,3240,3229,3219,3208,3198,3187,3176,3165,3155

                        dcw                3144,3133,3122,3111,3100,3089,3078,3067,3056,3044

                        dcw                3033,3022,3011,2999,2988,2976,2965,2953,2942,2930

                        dcw                2919,2907,2895,2884,2872,2860,2848,2836,2824,2812

                        dcw                2801,2789,2777,2765,2752,2740,2728,2716,2704,2692

                        dcw                2680,2667,2655,2643,2630,2618,2606,2593,2581,2569

                        dcw                2556,2544,2531,2519,2506,2494,2481,2468,2456,2443

                        dcw                2431,2418,2405,2393,2380,2367,2355,2342,2329,2316

                        dcw                2304,2291,2278,2265,2252,2240,2227,2214,2201,2188

                        dcw                2176,2163,2150,2137,2124,2111,2098,2086,2073,2060

                        dcw                2047,2034,2021,2008,1996,1983,1970,1957,1944,1931

                        dcw                1918,1906,1893,1880,1867,1854,1842,1829,1816,1803

                        dcw                1790,1778,1765,1752,1739,1727,1714,1701,1689,1676

                        dcw                1663,1651,1638,1626,1613,1600,1588,1575,1563,1550

                        dcw                1538,1525,1513,1501,1488,1476,1464,1451,1439,1427

                        dcw                1414,1402,1390,1378,1366,1354,1342,1329,1317,1305

                        dcw                1293,1282,1270,1258,1246,1234,1222,1210,1199,1187

                        dcw                1175,1164,1152,1141,1129,1118,1106,1095,1083,1072

                        dcw                1061,1050,1038,1027,1016,1005,0994,0983,0972,0961

                        dcw                0950,0939,0929,0918,0907,0896,0886,0875,0865,0854

                        dcw                0844,0833,0823,0813,0803,0792,0782,0772,0762,0752

                        dcw                0742,0732,0722,0713,0703,0693,0684,0674,0665,0655

                        dcw                0646,0636,0627,0618,0609,0600,0590,0581,0573,0564

                        dcw                0555,0546,0537,0529,0520,0512,0503,0495,0486,0478

                        dcw                0470,0462,0453,0445,0437,0430,0422,0414,0406,0399

                        dcw                0391,0383,0376,0369,0361,0354,0347,0340,0333,0326

                        dcw                0319,0312,0305,0298,0292,0285,0279,0272,0266,0259

                        dcw                0253,0247,0241,0235,0229,0223,0217,0212,0206,0200

                        dcw                0195,0189,0184,0179,0174,0168,0163,0158,0153,0149

                        dcw                0144,0139,0134,0130,0125,0121,0117,0112,0108,0104

                        dcw                0100,0096,0092,0089,0085,0081,0078,0074,0071,0068

                        dcw                0064,0061,0058,0055,0052,0049,0047,0044,0041,0039

                        dcw                0036,0034,0032,0029,0027,0025,0023,0021,0020,0018

                        dcw                0016,0015,0013,0012,0010,0009,0008,0007,0006,0005

                        dcw                0004,0003,0003,0002,0001,0001,0001,0000,0000,0000

                        dcw                0000,0000,0000,0000,0001,0001,0001,0002,0003,0003

                        dcw                0004,0005,0006,0007,0008,0009,0010,0012,0013,0015

                        dcw                0016,0018,0020,0021,0023,0025,0027,0029,0032,0034

                        dcw                0036,0039,0041,0044,0047,0049,0052,0055,0058,0061

                        dcw                0064,0068,0071,0074,0078,0081,0085,0089,0092,0096

                        dcw                0100,0104,0108,0112,0117,0121,0125,0130,0134,0139

                        dcw                0144,0149,0153,0158,0163,0168,0174,0179,0184,0189

                        dcw                0195,0200,0206,0212,0217,0223,0229,0235,0241,0247

                        dcw                0253,0259,0266,0272,0279,0285,0292,0298,0305,0312

                        dcw                0319,0326,0333,0340,0347,0354,0361,0369,0376,0383

                        dcw                0391,0399,0406,0414,0422,0430,0437,0445,0453,0462

                        dcw                0470,0478,0486,0495,0503,0512,0520,0529,0537,0546

                        dcw                0555,0564,0573,0581,0590,0600,0609,0618,0627,0636

                        dcw                0646,0655,0665,0674,0684,0693,0703,0713,0722,0732

                        dcw                0742,0752,0762,0772,0782,0792,0803,0813,0823,0833

                        dcw                0844,0854,0865,0875,0886,0896,0907,0918,0929,0939

                        dcw                0950,0961,0972,0983,0994,1005,1016,1027,1038,1050

                        dcw                1061,1072,1083,1095,1106,1118,1129,1141,1152,1164

                        dcw                1175,1187,1199,1210,1222,1234,1246,1258,1270,1282

                        dcw                1293,1305,1317,1329,1342,1354,1366,1378,1390,1402

                        dcw                1414,1427,1439,1451,1464,1476,1488,1501,1513,1525

                        dcw                1538,1550,1563,1575,1588,1600,1613,1626,1638,1651

                        dcw                1663,1676,1689,1701,1714,1727,1739,1752,1765,1778

                        dcw                1790,1803,1816,1829,1842,1854,1867,1880,1893,1906

                        dcw                1918,1931,1944,1957,1970,1983,1996,2008,2021,2034[/mw_shl_code]



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2016-8-23 16:28:09 | 显示全部楼层
现在看见用汇编写程序的就一个感觉牛B!
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 23:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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