いくつかのHPを参照し、31.25kbps, 5pin DINのMIDIをRaspberry PI で受信できるようにした。
<参照URL>
http://www.samplerbox.org/article/midiinwithrpi
https://zuzebox.wordpress.com/2014/06/26/raspberry-pi-minipiio-midi-board/
https://zuzebox.wordpress.com/2013/11/26/minipiiio-rs232-set-up/
Raspberry PIではUARTを31.25kbpsを実現するためにはトリッキーなことをしないならない。
- UARTのクロックの設定
config.txtを編集する。
sudo vi /boot/config.txt
以下の行を追加する。
# Change UART clock to 2441406 for MIDI 31250 baud rate
init_uart_clock=2441406
init_uart_baud=38400
- 一旦リブートする。
- UART をストップする。Raspberry PIはshell consoleにUARTを使っている。
3.1 cmdline.txtとinittabをバックアップする。
sudo cp /boot/cmdline.txt /boot/cmdline.bak
sudo cp /etc/inittab /etc/inittab.bak
3.2 cmdline.txtを編集する。
sudo vi /boot/cmdline.txt
“console=ttyAMA0,115200” と “kgdboc=ttyAMA0,115200” を削除する。
私にRaspberry pi では“kgdboc=ttyAMA0,115200”は設定されていなかった。
編集前
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
編集後
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
3.3 inittabを編集する。
sudo vi /etc/inittab
ファイルの最後の方にttyAMA0が含まれた行があるので、先頭 # を記入しコメント行とする。私の Raspberry PIでは最後の行、
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
- bcm2708 のクロックの設定
もう一回、config.txtを編集する。
sudo vi /boot/config.txt
以下のパラメータを追加
bcm2708.uart_clock=3000000
編集後
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait bcm2708.uart_clock=3000000
#計算してみると
init_uart_baud * init_uart_clock / bcm2708.uart_clock
= 38400 * 2441406 / 3000000 = 312499.968
となる。