跳到主要内容

自定义脉宽波形序列发生器

注意:本功能仅 ShineBlink C2 开发板支持。

一、实现功能介绍

每隔1秒发送一串开发者自定脉冲宽度以及自定义数量的方波序列,输出引脚固定为开发板的D3引脚。并通过逻辑分析仪查看实际波形。

自定义脉宽波形序列发生器使用领域:

自定义脉宽波形序列发生器,可用作步进电机信号源、红外发射信号源、WS2812 串行可编程LED灯珠驱动、以及定制化方波生成等。

二、接线图

layout

三、不含载波的完整示例代码

--将80M主频经过分频80后为1Mhz,即分辨率为1us。
--默认(空闲时)输出低电平,禁止输出反向功能,禁止载波功能
LIB_WaveFormConfig(80, 0, 0, 0, 0, 0, 0)
--定义一个包含5个脉冲的波形表格,该表格最大可包含512个脉冲,
--每个脉冲的宽度绝对值必须小于32767
tab = {100,-100,500,-500,1000}
while(GC(1) == true)
do
--每隔1秒发送一串包含五个高低电平的波形(阻塞式发送)
--五个电平脉宽分别为100us,100us,500us,500us,1000us
LIB_WaveFormSend(tab, 1)
LIB_DelayMs(1000)
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

代码运行后通过逻辑分析仪监测D3引脚所得波形图如下:

exp1

四、含载波的完整示例代码

--将80M主频经过分频80后为1Mhz,即分辨率为1us。
--默认(空闲时)输出低电平,禁止输出反向功能,使能载波功能
--载波占空比为50%,载波频率1MHz,载波有效电平为高电平
LIB_WaveFormConfig(80, 0, 0, 1, 50, 1000000, 1)
--定义一个包含5个脉冲的波形表格,该表格最大可包含512个脉冲,
--每个脉冲的宽度绝对值必须小于32767
tab = {100,-100,500,-500,1000}
while(GC(1) == true)
do
--每隔1秒发送一串包含五个高低电平的波形(阻塞式发送)
--五个电平脉宽分别为100us,100us,500us,500us,1000us
LIB_WaveFormSend(tab, 1)
LIB_DelayMs(1000)
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

代码运行后通过逻辑分析仪监测D3引脚所得波形图如下:

exp2

将波形拉开以后可以看到频率为1Mhz的载波波形,图形如下:

exp2_1