乐鑫技术交流
直播中

神之小风

12年用户 845经验值
私信 关注
[问答]

带漏极开路的双向RMT为什么要设置“启用”位?

我正在尝试清理我们的代码,现在正在查看我们的代码,该代码将两个 RMT 通道(一个输入,一个输出)配置为在同一引脚上工作,输出为漏极开路。

我想我明白其中的大部分内容,但我不明白为什么我们需要设置“启用”位 ( enable_w1ts )。我将不胜感激任何帮助或对代码的其他反馈。

上下文:变量引脚已用作 RMT 通道的引脚。首先是输出模式,然后是输入模式。

代码:[全选] [展开/折叠]
  •   // 这个函数必须在第一个 pin 之后被调用
  •   // 配置为输出通道,然后配置为输入通道。
  •   // 我们现在需要在不丢失输入的情况下重新启用输出。
  •   //启用引脚。"w1ts" = "写 1 设置"。
  •   // TODO: 不完全确定为什么需要这个,但没有它
  •   // 它不会工作。
  •   如果 引脚< 32 {
  •     通用输入输出口。enable_w1ts = ( 0x1 <<引脚) ;
  •   } 否则 {
  •     通用输入输出口。启用 1_w1ts数据 = ( 0x1 << (引脚- 32 ) )
  •   }
  •   // 重新配置输出通道。
  •   FATAL_IF_NOT_ESP_OK ( rmt_set_gpio ( out_channel, RMT_MODE_TX, pin, false ) ) ;
  •   //再次使引脚成为输入。
  •   PIN_INPUT_ENABLE ( GPIO_PIN_MUX_REG [引脚] ) ;
  •   //使引脚开漏。
  •   通用输入输出接口。别针[别针。pad_driver = 1 ;
  •   如果 启用上拉 {
  •     FATAL_IF_NOT_ESP_OK ( gpio_pullup_en ( static_cast < gpio_num_t > ( pin ) ) ) ;
  •   }

更多回帖

发帖
×
20
完善资料,
赚取积分