完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近接了一个项目,用的是MINI54ZDE,手上并没有实际板子。
使用内部RC作为时钟源,用串口打印I2C收到的数据,并控制相应IO状态. 但是现在发现IO可以正常控制,但是串口和i2c都没有工作。串口没有输出波形,i2C上有数据,但是mcu接收不到,下面是配置代码,请老铁们给看看 系统及外设时钟配置: void SYS_Init(void) { /* Unlock protected registers */ SYS_UnlockReg(); CLK_EnableXtalRC(CLK_PWRCON_HIRC_EN_Msk); CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk); CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC,CLK_CLKDIV_HCLK(2)); CLK_SetSystickClockSrc(CLK_CLKSEL0_STCLK_S_HIRC_DIV2); CLK_EnableModuleClock(UART_MODULE); CLK_EnableModuleClock(I2C_MODULE); CLK_SetModuleClock(UART_MODULE,CLK_CLKSEL1_UART_S_HIRC,CLK_CLKDIV_UART(1)); SYS->P0_MFP = ~(SYS_MFP_P01_Msk | SYS_MFP_P00_Msk); SYS->P0_MFP |= (SYS_MFP_P01_RXD | SYS_MFP_P00_TXD); SYS->P3_MFP = SYS_MFP_P34_SDA | SYS_MFP_P35_SCL; SYS_LockReg(); 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); ...... |
|
相关推荐
2个回答
|
|
串口没有波形,是TX没有波形吗?那样pinview看看TX多功能管脚是否真的切换到UART TX功能了
|
|
|
|
根据你提供的代码片段来看,你在系统初始化中启用了内部高速时钟源(CLK_PWRCON_HIRC_EN_Msk),并等待时钟稳定(CLK_CLKSTATUS_IRC22M_STB_Msk)。但是没有看到你配置串口和I2C相关的时钟和引脚。
首先,你需要根据你的应用要求选择合适的时钟源和分频器来为串口和I2C配置正确的工作时钟。你可以使用CLK_SetModuleClock()函数来设置模块时钟。例如,如果你要使用PCLK1作为串口和I2C的时钟源,可以按照以下方式进行设置: CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_PCLK1, CLK_CLKDIV_UART(1)); CLK_SetModuleClock(I2C1_MODULE, CLK_CLKSEL1_I2C1SEL_PCLK1, CLK_CLKDIV_I2C(1)); 这将将UART0和I2C1的时钟源选择为PCLK1,并将分频器设置为1。 然后,你需要配置正确的引脚配置来使得串口和I2C正常工作。你可以使用SYS->GPB_MFP和SYS->GPC_MFP寄存器来设置引脚映射。例如,如果你要使用PB0和PB1作为UART0的引脚,可以进行如下设置: SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk); SYS->GPB_MFP |= (SYS_GPB_MFP_PB0_UART0_RX | SYS_GPB_MFP_PB1_UART0_TX); 类似地,你需要设置正确的引脚映射来配置I2C引脚。 最后,你需要使能相应的时钟和模块使得串口和I2C能够正常工作。你可以使用CLK_EnableModuleClock()函数来使能模块时钟。例如,关于UART0和I2C1的使能可以如下设置: CLK_EnableModuleClock(UART0_MODULE); CLK_EnableModuleClock(I2C1_MODULE); 请注意,以上代码片段仅供参考,并可能需要根据你的硬件和应用需求进行适当调整。 除了时钟和引脚配置外,还需要确保其他相关的初始化和配置(例如UART和I2C的初始化、中断配置等)正确完成。 如果你确认了以上配置正确无误,但仍然无法正常使用串口和I2C,可能需要进一步检查硬件电路和信号连接,以确定是否存在硬件问题。 另外,如果你手头没有实际的开发板,很难判断是否是硬件问题。建议你尽量获取一个实际板子进行调试和测试,以便更好地分析和解决问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
644 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1819 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1262 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1136 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1357 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12024 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 04:42 , Processed in 0.710249 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号