OPN系FM音源チップを制御します
OPN3L(YMF288-M)を制御します。
OPNA(YM2608)やOPN(YM2203)にも使用可能だと思われますがテストしていません。
OPNの場合は拡張FM部を正しく指定してください。
ADPCM系はテストしていません。
読出しも未実装です。コメントアウトしてありますが確認とれていません。
このプログラムは YMF288変換基板+Arduinoで簡易S98プレーヤを作る(その1)(http://d.hatena.ne.jp/m_yanase/20130901/1378020818) を参考にしています。
Diff: FMOPN.h
- Revision:
- 2:ea441ce9e405
- Parent:
- 1:df099d954a8f
--- a/FMOPN.h Tue Jan 12 07:38:22 2016 +0000 +++ b/FMOPN.h Wed Jan 13 15:26:27 2016 +0000 @@ -9,13 +9,13 @@ #include "mbed.h" -#ifndef __OPN3L__ -#define __OPN3L__ -class OPN3L +#ifndef __FMOPN__ +#define __FMOPN__ +class FMOPN { public: - // D0 - 7 RST A0 A1 CS - OPN3L( + // D0 - 7 RST A0 A1 CS WR RD + FMOPN( PinName _D0, PinName _D1, PinName _D2, @@ -27,32 +27,35 @@ PinName RST, PinName A0, PinName A1, - PinName CS + PinName CS, + PinName WR, + PinName RD ); // Reset void reset(); // Write + // ifadr 0x00 A1 = 0 + // ifadr 0x01 A1 = 1 + // adr Address + // dat Data void reg_write(unsigned char ifadr, unsigned char adr, unsigned char dat); +// unsigned char reg_read(unsigned char ifadr, unsigned char adr); + void adr_write(unsigned char ifadr, unsigned char adr); void dat_write(unsigned char dat); +// unsigned char dat_read(); private: - DigitalOut _BIT0; - DigitalOut _BIT1; - DigitalOut _BIT2; - DigitalOut _BIT3; - DigitalOut _BIT4; - DigitalOut _BIT5; - DigitalOut _BIT6; - DigitalOut _BIT7; + + BusInOut _BUS; DigitalOut _RST; DigitalOut _A0; DigitalOut _A1; DigitalOut _CS; - - void write_data(unsigned char dat); + DigitalOut _WR; + DigitalOut _RD; void law_write(unsigned char ifadr, unsigned char adr, unsigned char dat);