一 、概述
该篇章主要测试 GPIO 的翻转速度,通过使用不同 API 函数,以及配置底层寄存器的方式,在 Flash 运行和放在 RAM 上运行的不同方式测试 IO 翻转速度。
二、使用工具
- 开发工具:MCUXpresso IDE
- 硬件:LPC55S69-EVK
- 测试工具:逻辑分析仪
三、在Flsah 中运行代码,使用不同方式测试 IO 翻转速度
这里系统时钟使用 100MHz, GPIO 配置为普通输出模式,Pull up模式,转换速率配置为 fast。
- GPIO_PinWrite() 翻转 IO,在 while(1) 直接写高写低操作,具体波形如下,高电平是 270ns ,低电平 310ns ,频率为 72MHz
2. 直接操作寄存器翻转 IO 口(GPIO->B[por][pin]),在 while(1) 直接写高写低操作,具体波形如下,高电平是 50ns ,低电平 40ns ,频率为 11.11MHz
3. 使用翻转 IO API 函数翻转(GPIO_PortToggle), 在 while(1) 直接写高写低操作,具体波形如下,高电平是 250ns ,低电平 250ns ,频率为 2MHz
4. 使用翻转 IO 寄存器翻转(GPIO_PortToggle), 在 while(1) 直接写高写低操作,具体波形如下,高电平是 90ns ,低电平 90ns ,频率为 5.56MHz
三、在RAM 中运行代码,使用不同方式测试 IO 翻转速度
这里系统时钟使用 100MHz, GPIO 配置为普通输出模式,Pull up模式,转换速率配置为 fast。
1. GPIO_PinWrite() 翻转 IO,在 while(1) 直接写高写低操作,具体波形如下,高电平是 330ns ,低电平 640ns ,频率为 56MHz
2. 直接操作寄存器翻转 IO 口(GPIO->B[por][pin]),在 while(1) 直接写高写低操作,具体波形如下,高电平是 50ns ,低电平 40ns ,频率为 11.11MHz
3. 使用翻转 IO API 函数翻转(GPIO_PortToggle), 在 while(1) 直接写高写低操作,具体波形如下,高电平是 270ns ,低电平 270ns ,频率为 1.85MHz
4. 使用翻转 IO 寄存器翻转(GPIO_PortToggle), 在 while(1) 直接写高写低操作,具体波形如下,高电平是 90ns ,低电平 90ns ,频率为 5.56MHz
四. 总结
- 使用 GPIO 寄存器对具体引脚操作的时间是最短的
- 使用翻转 IO 组的寄存器操作 IO 的翻转时间比操作具体 IO 引脚寄存器的时间要长
- LPC55S69 Flash & RAM 在同一组总线下,实际操作 IO 翻转的测试,Flash 运行的时间测到的会更快,目前只是翻转IO ,没有其他的逻辑和计算,仅仅是对于翻转 IO 实验,后续会综合对 Flash & RAM 运行的效率进行一个综合的测试
五.参考
评论