[技术问答]

关于新唐MINI54ZDE使用内部时钟的问题

[复制链接]
1000|6
手机看帖
扫描二维码
随时随地手机跟帖
dqqqqqqqq|  楼主 | 2018-12-4 09:57 | 显示全部楼层 |阅读模式
最近接了一个项目,用的是MINI54ZDE,手上并没有实际板子。
使用内部RC作为时钟源,用串口打印I2C收到的数据,并控制相应IO状态.
但是现在发现IO可以正常控制,但是串口和i2c都没有工作,串口没有波形,i2C上有数据,但是mcu接收不到,下面是配置代码,请老铁们给看看

系统及外设时钟配置:
void SYS_Init(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/

//    /* Set P5 multi-function pins for XTAL1 and XTAL2 */
//    SYS->P5_MFP &= ~(SYS_MFP_P50_Msk | SYS_MFP_P51_Msk);
//    SYS->P5_MFP |= (SYS_MFP_P50_XTAL1 | SYS_MFP_P51_XTAL2);

    /* Enable external 12MHz XTAL, internal 22.1184MHz */
    CLK_EnableXtalRC(CLK_PWRCON_HIRC_EN_Msk);

    /* Waiting for clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);

    /* Switch HCLK clock source to XTL */
    CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC,CLK_CLKDIV_HCLK(2));

    /* STCLK to XTL STCLK to XTL */
    CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLK_S_HIRC_DIV2);

    /* Enable IP clock */
    CLK_EnableModuleClock(UART_MODULE);
    CLK_EnableModuleClock(I2C_MODULE);

    /* Select IP clock source */
    CLK_SetModuleClock(UART_MODULE,CLK_CLKSEL1_UART_S_HIRC,CLK_CLKDIV_UART(1));

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Set P0 multi-function pins for UART RXD and TXD */
    SYS->P0_MFP &= ~(SYS_MFP_P01_Msk | SYS_MFP_P00_Msk);
    SYS->P0_MFP |= (SYS_MFP_P01_RXD | SYS_MFP_P00_TXD);

    /* Set P3.4 and P3.5 for I2C SDA and SCL */
    SYS->P3_MFP = SYS_MFP_P34_SDA | SYS_MFP_P35_SCL;

    /* Lock protected registers */
    SYS_LockReg();

    /* Update System Core Clock */
    SystemCoreClockUpdate();
}


上电相关配置:
int32_t main (void)
{
    uint32_t i;
    unsigned char debugdata[5];

    /* Init System, IP clock and multi-function I/O */
    SYS_Init();
    GPIO_Init();
               
    /* Init UART to 115200-8n1 for print message */
    UART_Open(UART0, 115200);
       
    /* Init I2C */
    I2C_Init();
    /* I2C enter no address SLV mode */
    I2C_SET_CONTROL_REG(I2C, I2C_SI | I2C_AA);
    ......

jliu_nuvoton| | 2018-12-4 14:18 | 显示全部楼层
UART没输出需要在options C/C++中将DEBUG_ENABLE_SEMIHOST删除掉。

捕获.PNG
I2C SDA和SCL总线是否外接上拉电阻(4.7K左右)?

使用特权

评论回复
dqqqqqqqq|  楼主 | 2018-12-4 16:14 | 显示全部楼层
jliu_nuvoton 发表于 2018-12-4 14:18
UART没输出需要在options C/C++中将DEBUG_ENABLE_SEMIHOST删除掉。

没有define这个DEBUG_ENABLE_SEMIHOST

使用特权

评论回复
598330983| | 2018-12-4 22:09 | 显示全部楼层
是不是在你没有贴的代码里使用了半主机啊

使用特权

评论回复
734774645| | 2018-12-5 14:38 | 显示全部楼层
不全啊,不过楼主解决了就好。

使用特权

评论回复
huangcunxiake| | 2018-12-7 10:41 | 显示全部楼层
一般我不用这个什么宏debug

使用特权

评论回复
yiy| | 2018-12-8 23:03 | 显示全部楼层
官方的BSP例子都是使用的内部RC振荡器。

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝