在Arduino下用ESP32的RMT发送指定数量脉冲的方法
【代码】在Arduino下用ESP32的RMT发送指定数量脉冲的方法。
·
之前没用过RMT,用笨办法SPI做发送实验《ESP32用SPI产生任意个数脉冲的方法》,虽然也成功了,但是缺点还有很多,毕竟不是专们的硬件,有些浪费资源,这两天学习RMT,发现非常适合这方面的应用,网上的例程大多数是在ESP-IDF环境下的,Arduino比较少,AI给出的答案也五花八门,通过学习摸索,编写了如下程序,可以正常工作,还以发送131个脉冲为例:
static rmt_data_t gclk_data[131] = {0}; //RMT数据
static rmt_obj_t *rmt_obj = nullptr; //RMT对象
//初始化RMT------------------------
rmt_obj = rmtInit(GCLK, RMT_TX_MODE, RMT_MEM_192 );
rmtSetTick(rmt_obj, 50); // 50ns
//---------------------------------
//设置需要发送的数据-----------------
for (int col = 0; col < 131; col++)
{
gclk_data[col].level0 = 1; //
gclk_data[col].duration0 = 2; //高电平宽度
gclk_data[col].level1 = 0; //
gclk_data[col].duration1 = 2; //低电平宽度
}
gclk_data[130].level0 = 1; //
gclk_data[130].duration0 = 2; // 高电平宽度
gclk_data[130].level1 = 0; // 结束符
gclk_data[130].duration1 = 0; //
//----------------------------------
//发送脉冲---------------------------
while(1)
{
rmtWriteBlocking(rmt_obj, gclk_data,sizeof(gclk_data));
}
//----------------------------------
更多推荐



所有评论(0)