打印
[应用方案]

新塘M451 UART3与PWM1配置易冲突

[复制链接]
517|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tinnu|  楼主 | 2020-4-11 21:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
对UART3(D12 D13)如下配置时:

void UART3_Init()

{

    /*---------------------------------------------------------------------------------------------------------*/

    /* Init UART                                                                                               */

    /*---------------------------------------------------------------------------------------------------------*/

    /* Reset UART module */

    SYS_ResetModule(UART3_RST);



    /* Configure UART0 and set UART0 baud rate */

    UART_Open(UART3, 115200);



    /* Enable UART RDA/THRE/Time-out interrupt */

    UART_EnableInt(UART3, (UART_INTEN_RDAIEN_Msk));

}

如果配置PWM1:

void PWM1_FunctionInit(void)

{

//        PWM1_ClockInit();

//        PWM1_IOInit();

        /*

                Configure PWM0 channel 0 init period and duty.

                Period is PLL / (prescaler * (CNR + 1))

                Duty ratio = (CMR + 1) / (CNR + 1)

                Period = 72 MHz / (2 * (199 + 1)) = 180000 Hz

                Duty ratio = (99 + 1) / (199 + 1) = 50%

        */

        // PWM0 channel 0 frequency is 180000Hz, duty 50%,

        PWM_ConfigOutputChannel(PWM1, 2, 50, 20);

        PWM_ConfigOutputChannel(PWM1, 3, 50, 20);



        // Enable output of PWM0 channel 0

        PWM_EnableOutput(PWM1, PWM_CH_2_MASK);

        PWM_EnableOutput(PWM1, PWM_CH_3_MASK);



        //Start

        PWM_Start(PWM1, PWM_CH_2_MASK);

        PWM_Start(PWM1, PWM_CH_3_MASK);

}

会导致UART3产生一次假中断,发生了中断,进入了服务函数,但没有接收任何数据。

如果配置
PWM1_IOInit();

的话,还会导致UART3出BUG,无法发送接收:

void PWM1_IOInit(void)

{

        //retarget, this is unsafe

        SYS->GPD_MFPH = SYS_GPD_MFPH_PD15MFP_PWM1_CH3 | SYS_GPD_MFPH_PD14MFP_PWM1_CH2;

}

以本人拙见认为这是由于D14、D15同时也是UART的nRTS、nCTS脚,芯片逻辑设计有BUG,导致PWM1配置会影响UART,因此电路板设置应尽可能避开把UART3和PWM1同时使用的情况。(我测试的程序还同时使用了UART0,但没有产生任何的问题)


使用特权

评论回复
沙发
antusheng| | 2020-4-11 22:11 | 只看该作者
配置完,再对D14,D15设置一次,作为普通IO。

使用特权

评论回复
板凳
heisexingqisi| | 2020-4-12 13:53 | 只看该作者
官方出的有个调试工具

使用特权

评论回复
地板
heisexingqisi| | 2020-4-12 13:54 | 只看该作者
http://www.nuvoton.com.cn/resource-download.jsp?tp_GUID=SW1320200221181935

使用特权

评论回复
5
heisexingqisi| | 2020-4-12 13:54 | 只看该作者
http://www.nuvoton.com.cn/tool-and-software/software-development-tool/nutool/

使用特权

评论回复
6
heisexingqisi| | 2020-4-12 17:06 | 只看该作者
在主函数里初始化顺序调整一下试试看。

使用特权

评论回复
7
heisexingqisi| | 2020-4-12 17:06 | 只看该作者
先初始化串口,再初始化PWM

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

71

帖子

0

粉丝