我想以KSDK 像西兰花作为本帖的开始。你可能觉得它难吃,但试试用它,您将会拥有超能力! (请勿控告我) 起初,我可能会碰一鼻子灰,不断使用各种结构和抽象层,但现在,我满脸笑容,能够快速地进行操作,而无需参考手册。不对,我压根不用记。
由于vscp软件在UDOO/网关侧运行,现在是时候制作一个vscp模块,在我之前所描述的VSCP CAN总线网络中实现通信。现在已有一些“can4vscp_x”模块在售,它们已经使用低端硬件(pic),但往往集中在一个具体事务上(操作继电器,或测量温度,提供少量IO等)。当您将与FRDM-K64F功能完全一样的通用MCU连接到网络时,事情变得更加有趣。 您当然可以使用FRDM-K64F作为网关本身,采用MQX中的板载以太网和wolfSSL支持,但目前主要的vscp软件和守护进程仅在Linux上运行。
我认为如果给出选择(成本、功耗和尺寸),当一些事情(API、数据格式等)不可避免地在后端改变时,大多数人更愿意在Linux环境中实施他们的“云”界面,而不是更换微控制器固件。本帖将采用KDS 3.0.0和KSDK 1.2将FRDM-K64F转变为“can4vscp”模块。我已经开始为这块模块进行github repo,readme文件说明了如何获得相关代码和工具来构建项目以及在何处了解更多信息。
曾经有一次,我克隆了vscp_firmware,将vscp_firmware.c复制到源文件夹,然后为我的机子添加了一个路径至vscp_firmware\common。
我通过start | VSCP Firmware进入文档,了解我需要实施哪些功能,才能兼容“vscp”。我实施的第一个功能就是vscp固件使用的1ms时钟。我现在来解释一下,这根本无需查看参考手册。
我进入ksdk driver_examples,并找到“lptmr_example_frdmk64f”。然后,使main.c成为can4vscp_frdmk64f项目的主要文件。我发现这行可以设置LPTMR时间(单位微秒),并更改此时间为1000;
然后,我在lptmr 回调例程中切换gpio,从而采用示波器检查时钟速度。如果我们需要每1ms或1kHz勾选一次时间,就在示波器上寻找500Hz。
我发现我无法获得超过250Hz的任何速度,无论在设置定时器呼叫中我将此值设置的多么低。我注意到配置 lptmr struct可以使用1kHz低功耗时钟,因此我在使用此时钟源限制时是正确的,它可能至少被2整除,这就是为什么我最大设置为250Hz(在示波器上)。现在怎么办?
我右击'kClockLptmrSrcLpoClk',打开声明,发现有另外3个时钟源可供选择。
我设置prescalerClockSource为'kClockLptmrSrcMcgIrClk',无需任何其他更改,引脚频率跳至预期的500Hz,或1ms的脉冲宽度。 时间飞逝:
|