DSP论坛
直播中

擦肩的阳光

11年用户 638经验值
擅长:可编程逻辑 嵌入式技术
私信 关注

【创龙TMS320C6748开发板试用】+创龙ECAP_APWM代码分析

本帖最后由 擦肩的阳光 于 2015-10-13 18:23 编辑

1.打开工程

145134jwylhzyyquw3yuhd.jpg.thumb.jpg


2.main函数中的代码,和与ecap比较相关的函数,中断我还没看,所以先忽略……

153112uc09x7zq701cic9i.jpg.thumb.jpg

3.GPIO管脚复用配置


145139bbftc6wl6tfwktdw.jpg.thumb.jpg

4.ctrl+单击 打开函数

145141v9ufchtph88he9ue.jpg.thumb.jpg
居然只有声明

5.去 demoStarterWareApplicationPlatform 看看,有ECAP.c文件。打开

145142a22w122n0vn2vzc2.jpg.thumb.jpg

有了。

6.具体看看
145143bkz6cl4z2b2svyyb.jpg.thumb.jpg
0x01C14000  这个在gel文件有说,

150333ysw6mzppsms566vh.jpg.thumb.jpg

点进去也能看见,在soc_C6748.h 如下:

150335jn7766ko8ng8o68k.jpg.thumb.jpg



以n==2 中为例
SYSCFG_PINMUX1_PINMUX1_3_0 的值0x0000000Fu,&上它的~,就是除了这四位,每位都和1与,这样就保存了原来其他位的值,并把这四位置0了
我看hw_sysycfg0_C6748.h文件对各种宏定义的声明,SYSCFG_PINMUX1_PINMUX1_3_0这个其实在就是相当于选择了0-3这四位,每一个都有SYSCFG_PINMUX1_PINMUX1_3_0_SHIFT这个是给寄存器赋值时寄存器的偏移位,向这里是0-3位,所以偏移值为0,但对于高位偏移值就各不一样了:


151549olz9z6444r0rsl9w.jpg.thumb.jpg



然后就很清楚了:
先取得32位寄存器中其他的值,保留而不改变,把这四位置0。
然后再把这寄存器赋 保留下来的其他位的值 | ecap2使能需要的置位
看一下PINMUX1_ECAP2_ENABLE:

152416zjyderaqdnomqmcb.jpg.thumb.jpg

就是管脚配置成ECAP2功能 加一个移位

这是TI Pin Multiplex Utility中的配置

153414edn7vc4n7ini46mc.jpg.thumb.jpg



ok,管脚配置讲完了~
下面是:APWMInit() 函数


看函数:


170133hp8t6wlze76kzklw.jpg.thumb.jpg

就这四个步骤了吧~
依次说下
1)


170327xhhkh7k5523852j7.jpg.thumb.jpg

上面也写了用法
也就是把ECAP_ECCTL2_CAP_APWM赋值ECCTL2寄存器的第九位,看datasheet:


170938f5jyk5e6b55j7n67.jpg.thumb.jpg



2)


171106cx2mssod2d5m8g88.jpg.thumb.jpg



CAP1,CAP2寄存器也说了:
170129i56s4qi7xz6r8es6.jpg.thumb.jpg



170131m0bi32r5z6mq03iv.jpg.thumb.jpg



datasheet P349,对于APWM功能的描述:
171424lsl4nffnauanzoea.jpg.thumb.jpg

一个CMP,一个PRD

3)

172203i1c0znk3vvvv1m3x.jpg.thumb.jpg

这个就是APWM极性选择位,例程给了1
0--输出高电平有效
1--输出低电平有效

4)
依旧这样
172700emyounwmwb8tga1m.jpg.thumb.jpg


172701lcvvcsoufutccycv.jpg.thumb.jpg

看一看我的效果吧:


175201kdp32xdpzzwm2hit.jpg.thumb.jpg




到此,差不多看完了。不过正如我在上一篇帖子说的那样,我只是跟着程序走,并不知道我应该做什么,希望各位指导下菜鸟。
我还有两个问题,不知大家有没有遇到的:
1.我在debug下用仿真器在线调试,当烧写第二次是,仿真器就提示连接不上了,再重开ccs,就可以,不知原因。
2.例程给的是用ECAP2来产生PWM,我不知道是哪里控制让ECAP2来执行这件事,APWMInit函数说是对ECAP2配置,但我不知道怎么对ECAP0,1配置,开发板也没有留出接口来供我使用,所以不是很明白。
如果各位大牛遇到过这些问题,还希望各位能指导指导在下啦!


回帖(5)

擦肩的阳光

2015-10-27 14:47:44

电子微创意

2015-10-27 15:45:09

问题1:可能是CCS软件的问题,毕竟是和谐的,我也发现会有这个问题。不过重启一下软件也可以接受,
问题2:ECAP这一块还没看,有时间了看一下再交流。
举报

电子微创意

2015-10-27 17:04:14
问题2:ECAP是DSP的硬件外设,配置之后它会自己实现PWM的输出。对ECAP0/1的配置虽然我没有仔细看,但觉得方法类似。TL6748的ECAP1的引脚貌似预留的有,原理图J2的7、9好像就是ECAP1。
图片1.jpg

另外建议楼主再看一下例程: PWM_ECAP
这个例程就是使用ECAP1来输出方波,使用ECAP2来捕获。
举报

擦肩的阳光

2015-10-27 19:16:31
引用: 电子微创意 发表于 2015-10-27 17:04
问题2:ECAP是DSP的硬件外设,配置之后它会自己实现PWM的输出。对ECAP0/1的配置虽然我没有仔细看,但觉得方法类似。TL6748的ECAP1的引脚貌似预留的有,原理图J2的7、9好像就是ECAP1。

另外建议楼主再看一下例程: PWM_ECAP

那两个脚是eHRPWM模块哒~
PWM_ECAP我也看过了,不过没写出来。
我有点不太清楚下一步该干什么了,不想浪费这块板子呀,,求指导
举报

电子微创意

2015-10-27 20:12:59
引用: 擦肩的阳光 发表于 2015-10-27 19:16
那两个脚是eHRPWM模块哒~
PWM_ECAP我也看过了,不过没写出来。
我有点不太清楚下一步该干什么了,不想浪费这块板子呀,,求指导

认真看看资料,了解使用方法。这类应该不是很麻烦的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分