1.打开工程


支持emmc芯片的winpe系统_寄存器




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


支持emmc芯片的winpe系统_创龙DSP_02



3.GPIO管脚复用配置



支持emmc芯片的winpe系统_C6748_03




4.ctrl+单击 打开函数


支持emmc芯片的winpe系统_创龙DSP_04



居然只有声明


5.去 demo\StarterWare\Application\Platform 看看,有ECAP.c文件。打开


支持emmc芯片的winpe系统_支持emmc芯片的winpe系统_05



有了。


6.具体看看


支持emmc芯片的winpe系统_C6748_06


0x01C14000  这个在gel文件有说,


支持emmc芯片的winpe系统_DSP_07




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


支持emmc芯片的winpe系统_C6748_08




以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,但对于高位偏移值就各不一样了:



支持emmc芯片的winpe系统_C6748_09





然后就很清楚了:

先取得32位寄存器中其他的值,保留而不改变,把这四位置0。

然后再把这寄存器赋 保留下来的其他位的值 | ecap2使能需要的置位

看一下PINMUX1_ECAP2_ENABLE:


支持emmc芯片的winpe系统_创龙DSP_10



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


这是TI Pin Multiplex Utility中的配置


支持emmc芯片的winpe系统_寄存器_11





ok,管脚配置讲完了~

下面是:APWMInit() 函数



看函数:


支持emmc芯片的winpe系统_DSP_12




就这四个步骤了吧~

依次说下

1)


支持emmc芯片的winpe系统_创龙DSP_13




上面也写了用法


也就是把ECAP_ECCTL2_CAP_APWM赋值ECCTL2寄存器的第九位,看datasheet:



支持emmc芯片的winpe系统_支持emmc芯片的winpe系统_14







2)



支持emmc芯片的winpe系统_创龙DSP_13





CAP1,CAP2寄存器也说了:



支持emmc芯片的winpe系统_支持emmc芯片的winpe系统_16







支持emmc芯片的winpe系统_支持emmc芯片的winpe系统_17




datasheet P349,对于APWM功能的描述:

支持emmc芯片的winpe系统_C6748_18



一个CMP,一个PRD


3)


支持emmc芯片的winpe系统_支持emmc芯片的winpe系统_19



这个就是APWM极性选择位,例程给了1

0--输出高电平有效

1--输出低电平有效


4)

依旧这样

 

支持emmc芯片的winpe系统_DSP_20

支持emmc芯片的winpe系统_创龙DSP_21




看一看我的效果吧:







支持emmc芯片的winpe系统_DSP_22









我还有两个问题,不知大家有没有遇到的:

1.我在debug下用仿真器在线调试,当烧写第二次是,仿真器就提示连接不上了,再重开ccs,就可以,不知原因。

2.例程给的是用ECAP2来产生PWM,我不知道是哪里控制让ECAP2来执行这件事,APWMInit函数说是对ECAP2配置,但我不知道怎么对ECAP0,1配置,开发板也没有留出接口来供我使用,所以不是很明白。