我希望接收MIDI信息来控制基于微控制器的合成器,我正在努力理解MIDI协议,因此我可以实现一个MIDI处理程序。我读过MIDI是在没有专用时钟线的情况下以31.25kHz发送的 - 我必须用微控制器对31.25kHz的线路进行采样才能接收MIDI字节吗?
答案 0 :(得分:0)
硬件MIDI接口以31.25(+/- 1%)Kbaud运行,异步,具有起始位,8个数据位(D0至D7)和一个停止位。 [...]首先向LSB发送字节。
这描述了标准的UART协议;您可以简单地使用大多数微控制器内置的UART硬件。(选择31250 Hz的波特率是因为它可以很容易地从1 Mhz(或多个)时钟得到。)
如果您真的想在软件中实现接收器,您可以以更高的速率对输入信号进行采样,以便能够可靠地检测每个位中间的电平;有关详细信息,请参阅What exactly is the start bit error in UART?和How does UART know the difference between data bits and start/stop bits?