目录
1. PKE8720DF-C13-F10开发板
PKE8720DF-C13-F10是基于PKM8720DF-C13-F10模组集成的开发板,支持 Wi-Fi 和 BT 5.0 协议。它使用 USB TypeC 连接器供电,具有自动上传电路。
PKE8720DF-C13-F10的基本信息、外设接口、引脚定义以及Arduino IDE配置的详细信息可以参考这一篇《使用PKE8720DF-C13-F10实现Arduino example——Button》。
2. 所需材料
2.1 硬件需求
(1) 逻辑分析仪一台,如下图所示。
(2) PKE8720DF-C13-F10开发板一块。
(3) Type-C USB线一根。
(4) 杜邦线至少两根。
2.2 软件需求
(1) ImageTool
可用于download编译好的image文件到板子上。
(2) uart.alc
用于查看逻辑分析仪的波形图。
这里也可以选用示波器代替逻辑分析仪,这样的话就不用这个工具。
(3) Linux/Windows开发编译环境。
其编译的流程可参考这一篇《快速上手PKE8720DF-C13-F10开发板》。
3. 代码介绍
可以到“github_ambd_sdk”这里下载全部的相关源代码。
我们这里需要修改的代码如下:
cd ${ambd_sdk}/project/realtek_amebaD_va0_example/example_sources/UART/raw/uart_clock/src
vim main.c
然后,我们在这个文件里面,可以看到UART_TX和UART_RX的端口定义:
#define UART_TX _PA_18 //UART0 TX
#define UART_RX _PA_19 //UART0 RX
这里,我们要根据实际情况进行调整。可以看到,在PKE8720DF-C13-F10上面没有看到PA18和PA19这两个端口。我们可以根据实际端口示意图,进行调整,这里选择PB19作为TX端口,PB18作为RX端口,这样,上面这两行就修改为:
#define UART_TX _PB_19 //UART0 TX
#define UART_RX _PB_18 //UART0 RX
然后我们再看最下面的main函数:
void main(void)
{
// only support 33kHz, 36kHz, 36.7kHz 38kHz, 40kHz, 56kHz
uart_clock_init(40000);
while(1) {
uart_clock_on();
/*set clock time*/
DelayMs(2000);
uart_clock_off();
DelayMs(3000);
}
}
这里从注释中得知,这里只支持下面这几种频率:33kHz, 36kHz, 36.7kHz 38kHz, 40kHz, 56kHz,那么“uart_clock_init(40000);”这一行就表示选择了40kHz这个频率。
然后,我们将这个main.c文件复制到src_hp目录下,替换掉里面原来的main.c,这样板子在启动时就执行这里的函数:
cp -f main.c ../../../../../src/src_hp/
然后开始编译,生成三个image文件。
${GCC_RELEASE}/project_lp/asdk/image/km0_boot_all.bin
${GCC_RELEASE}/project_hp/asdk/image/km4_boot_all.bin
${GCC_RELEASE}/project_hp/asdk/image/km0_km4_image2.bin
4. 测试时钟信号
我们将生成的三个image文件烧录到板子中。
将逻辑分析仪上面的A0接入到板子上的TX,也就是上面代码中修改的PB19。逻辑分析仪上的GND接到板子上的GND。
这里只需要查看板子输出的时钟信号,所以板子上的RX暂时不用接。
将板子通过type-C USB接到电脑上。
将逻辑分析仪接到电脑上,打开uart.alc工具。
设置触发条件为上下边沿触发,采样率选取时钟信号频率的两倍或以上均可,这里使用200,如下:
然后点击“开始分析”,即右向三角按钮,重启板子,就可以在界面上看到时钟信号图了。
可以看到这里的rxTime[2500],即是40kHz的倒数。
然后我们可以再试着看一下56kHz的情况,类似的,修改上面的main.c文件,把里面的“uart_clock_init(40000);”修改为“uart_clock_init(56000);”即可,然后编译,download image,用逻辑分析仪查看。
可以看到这里的rxTime[1786],即是56kHz的倒数。