"); //-->
这是ecos.db里面所包含的模板,为EA LPC2468 OEM board的模板。
在C:\cygwin\opt\ecos-3.0\packages\hal\arm\lpc24xx\ea2468\v3_0\src目录下的ea2468_misc.c文件中,函数void hal_pll_init(void)里面的几行,如下:
212 // Set CPU clock divider
213 //
214 HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_CCLKCFG,
215 CYGNUM_HAL_ARM_LPC24XX_CPU_CLK_DIV - 1);
216
217 //
218 // Set USB clock divider
219 //
220 HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_CCLKCFG,
221 CYGNUM_HAL_ARM_LPC24XX_USB_CLK_DIV - 1);
需要注意的是CYGARC_HAL_LPC24XX_REG_CCLKCFG(粗体是我加的,下同),在设置USB时钟时,却是给CPU时钟赋值。因此,在eCos Configuration Tool里对CPU的频率作修改后,最后还是由USB的分频值来确定CPU的时钟。如果两个时钟都是设定为48MHz,那么在程序运行时不会出现问题。如果需要CPU的时钟为72MHz,而USB的时钟为48MHz,此时CPU的时钟仍为48MHz。将220行作如下修改,即可。
220 HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_USBCLKCFG,
另外,还有一个设置串口波特率时需要注意的地方。
在void hal_plf_startup(void)函数中:
// Set clock speed of all peripherals to reset value (CPU speed / 4)
//
HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PCLKSEL0, 0x00000000);
HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PCLKSEL1, 0x00000000);
这里设置了外围设备的时钟为CPU时钟的1/4。
波特率的计算为:
UxDLM = (UARTx_PCLK / (baudrate*16)) >> 8;
UxDLL = (UARTx_PCLK / (baudrate*16)) & 0xFF;
假设CPU_CL=48MHz,需要设置baudrate为115200,这时可以计算出:
UxDLM = ((48000000/4) / (115200*16)) >> 8 = 0
UxDLL = ((48000000/4) / (115200*16)) & 0xFF = 6
其实,(48000000/4) / (115200*16) = 6.51。可以看出,误差很大。
再计算一下波特率为128000的情况:(48000000/4) / (128000*16) = 5.86。
由此可以知道,当评估板的波特率按照以上参数设置时,由于误差的存在,设置的波特率并不是如eCos配置工具所显示的。
使用较低的波特率将不会出现该问题。或者可以提高UART0的时钟,只需作如下修改:
HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PCLKSEL0, 0x00000040);
修改后的 UxDLL = (48000000 / (115200*16)) & 0xFF = 26,
而 (48000000 / (115200*16)) = 26.04,误差就小多了。
如果使用更高的时钟,例如72MHz,可算得(72000000 / (115200*16)) = 39.06,误差就更小了。
在72MHz时,芯片会有点发热,用手可以感觉出来,可见功耗应该蛮大的。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
国产 ADC 芯片打入高端局
求助搂住帮忙
云服务商加码ASIC 服务器厂商迎来出货良机
求图像处理资料
面向超精准应用的匹配电阻器网络
三十载精\"芯\"\"质\"造,英飞凌无锡打造绿色智能工厂典范
NiosII培训教程与实验材料
最小的飞行机器人借助磁铁翱翔
正弦波一方波转换电路
思创嵌入式系统开发能力培训招生简章
请教RTL81X9网卡驱动开发问题
MCU电力线通信(PLC)解决方案
采用与非门的脉冲展宽电路
AI脑机界面突破:让瘫痪患者用思维「开口说话」
STM32F10xxx TIM应用实例
可设定型脉冲宽度发生电路
设定型脉冲宽度电路
中美人形机器人对决 中国积极投入抢占商业化先机
MCU电能计量解决方案
STM32F10xxx USB开发工具包
Verilog HDL设计的要点
再加码!台积电在美投资或增加到2000亿美元
苹果iOS 18.4发布,AI功能支持中文版本
LCD直接驱动解决方案
[推荐]1580元优惠注册公司!
同步式脉冲调宽电路
谷歌调整Android OS开发模式:AOSP开源项目受影响
无线射频识别技术(RFID)理论与应用
宁德时代:电动车过分强调超充技术将牺牲电池产品可靠性
R8C、Lx学习型遥控器参考设计