bit banging 上的一根线与 usart 上的一根线

one-wire over bit banging vs. one wire over usart

我想用one-wire协议的传感器,请问哪种协议使用方式更优化更合理?在 usart 上还是使用 bit banging?

如果这很重要,我正在使用 am2305 和 stm32fxx 微控制器。

我更喜欢使用带有一个缓冲区的 USART+DMA 进行发送和接收。我认为这个选择取决于您的技能和项目要求。

有很多方法可以实现单线协议。

  • exti 中断 + timer base 模式
  • 定时器输入捕获+dma
  • usart 中断
  • usart(仅限错误中断)+ dma

它们各有优缺点:

  • 引脚忙或空闲
  • 忙碌或空闲的外围设备(tim、usart)
  • 忙或空闲 DMA 通道
  • 程序中的中断频率较低或较高
  • 实施起来容易还是困难

我有不同的项目,其中使用上面列出的第一个和最后一个方法。

您必须知道哪种方法更适合您和您的项目。