在STM32上实现一个虚拟仪器(MIDI输出),注意不能工作

在STM32上实现一个虚拟仪器(MIDI输出),注意不能工作,stm32,midi,uart,Stm32,Midi,Uart,我正在STM32(STM32F103x)上实现一个虚拟仪器。像普通的“hello world”一样,我尝试从最简单的MIDI消息开始,在循环中发送带注释的MIDI消息,看看它是否有效 我每500毫秒发送一次MIDI注释信息,在一个永久循环中只发送注释信息,但它不起作用。是否必须发送任何其他MIDI消息才能使MIDI正常工作?想要一些初始化消息吗 基于MIDI 1.0规范,我通过USART接口发送MIDI消息来完成STM32上的代码。 然后使用逻辑分析仪,我确认我的MIDI消息完全符合MIDI

我正在STM32(STM32F103x)上实现一个虚拟仪器。像普通的“hello world”一样,我尝试从最简单的MIDI消息开始,在循环中发送带注释的MIDI消息,看看它是否有效

我每500毫秒发送一次MIDI注释信息,在一个永久循环中只发送注释信息,但它不起作用。是否必须发送任何其他MIDI消息才能使MIDI正常工作?想要一些初始化消息吗


基于MIDI 1.0规范,我通过USART接口发送MIDI消息来完成STM32上的代码。

然后使用逻辑分析仪,我确认我的MIDI消息完全符合MIDI 1.0规范。至少我相信它是正确的,没有问题。31250波特率,1个开始位,1个停止位,一条状态消息0x92后跟两个数据字节0x48和0x7F,首先是LSB

以下是逻辑分析仪在URAT接口的TX线上捕获的注释信息。我继续每500ms发送相同的3个字节。

这3个字节的总时间为960微秒,也符合MIDI 1.0规范中提到的值。


然后,根据“(CA-033)MIDI 1.0电气规范更新[2014]”,我购买了一个5针MIDI输出插孔,通过一个10欧姆的电阻器将URAT TX线连接到引脚5,通过一个33欧姆的电阻器将3.3V电源连接到引脚4,引脚2和插孔屏蔽连接到GND。未使用其他可选零件(Rc缓冲垫、铁氧体磁珠)

然而,当我使用USB-MIDI线将我的MIDI输出插孔连接到我的电脑时,什么也没发生。USB-MIDI线有两个LED指示灯,一个用于电源,另一个用于MIDI信号。连接后,电源LED亮起,但MIDI信号LED从不亮起

我试着用逻辑分析仪来分析我的MIDI输出插孔的引脚5,MIDI信息字节与URAT TX线路完全相同,每500毫秒一条注释信息。然而,它从来都不起作用


我还尝试创建自己的PCB,并遵循。然后将URAT TX直接连接到SAM2695引脚中的MIDI_,仍然没有响应。因为我对我的手工焊接PCB没有信心,不确定PCB本身是否有问题,导致它没有响应。所以我买了一根USB-MIDI线,但结果正如我上面提到的,仍然没有反应


=======2021年4月26日更新=========

根据评论,已尝试检查光耦的输出。 在做这项检查之前,我买了几台BSS138,将MIDI信号转换为5V单用以下电路(当然,根据规格,将MIDI插孔引脚附近的电阻更改为220欧姆)

在这个变化之后,我测量了5V URAT TX的电压,它显示为4.8+V,逻辑分析仪在这个新的5V MIDI信号的消息上显示正确的MIDI注释。然而,它仍然不起作用

我唯一剩下的故障排除方法是测量USB-MIDI导线上光耦的输出。但我没有在这个MIDI USB线PCB上找到光耦。甚至没有任何一个组件在PCB上有4个引脚(根据我的理解,光耦至少需要4个引脚)。 PCB上只有一个主芯片,光耦是否可能嵌入该芯片?由于引脚太小,我无法将逻辑分析仪连接到这些引脚进行检查


发送信号看起来正常。你在光耦的输出端测量了相同的信号吗?许多便宜的中国USB/MIDI适配器都是垃圾,并且,连同许多其他错误,在3.3伏信号下不能很好地工作。您使用的是哪一个?感谢@CL.确认发送信号正常。我还没有测量光耦的输出,将尝试这样做。适配器品牌为“WERSI”,不确定是否支持3.3V单电源,手册中没有此类详细信息。可能是用于指示MIDI信号的LED从引脚4获取电源导致其无法工作,MIDI规范中提到了这一点:“当引脚4连接到+3.3V而不是+5V时,从引脚4获取电源的设备可能无法运行,因为电源电路可能取决于大于+3.3V变送器提供的最小可用电压。“嗨@CL。我在这条MIDI USB线上没有找到光耦。此外,我使用BSS138将MIDI信号更改为5V,但仍然无法工作。也许我需要买一个更好的USB-MIDI适配器。。。