« WM8741動かず・・・・・ | トップページ | ATAPIコントローラーは中止 »

2009年12月26日 (土)

CS8416のソフトモードの試作

ソフトモードに再度挑戦してみました。
Cimg2107
左の基板は上野氏のAVRを使ったCS8416のDAIです。
これは正常に動作するのでSPI通信に必要な信号線をPICからだして、
CS8416に直接接続してみました。
もちろんPICでコントロールするときはAVRははずします。
PIC用モニターに、シリアル->USB変換(FT232)を接続しデーターを送信するようにして、ハイパーターミナルをモニター代わりにしました。

それで、レジスターの書き込みは出来ているようでして、音声信号、L/R信号、ビットクロックが出力されました。

問題は、レジスターの読み込みが出来ないことです。これが出来ないと市販品のような
表示が出来なく面白みがありません。そのうち解決させる予定ですが一旦保留。
次回はI2Cで試してみることにしています。

ソースです。(試作中なのでおかしな部分があるかと思います)
コンパイルにはCCSが必要です。
(上野氏のプログラムを解析したことがバレバレ)

//-----------------------------------------------   
//       CS8416ソフトモード用
//     使用PIC PIC16F886: 4.0Hz (内臓クロック使用)
-------------------------------------------------

#include "16F886.H"
#fuses INTRC_IO,NOWDT,NOPROTECT,PUT,BROWNOUT,MCLR,NOLVP
#use delay(clock=4000000)
#use RS232(BAUD=9600, XMIT=PIN_C6  ,RCV=PIN_C7)
// 関数
// 変数
static int  addres;
static int reg_data;
static int read_data;

void main(void)
{
     setup_oscillator(OSC_4MHZ);
// MSSP初期設定 SPIモード
    setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_4 );
//ポート設定
     setup_adc(NO_ANALOGS);
    SET_TRIS_A(0x00);
    SET_TRIS_B(0x00);
//    SET_TRIS_C(0x90);
    output_high(PIN_a0); // rest
    output_high(PIN_a1); // cs

    printf("Test Start \r\n");
    printf("\r\n");
 
// CS8416 RESET
     output_high(PIN_a0); // rest
    output_low(PIN_a0); // rest
    delay_ms(2);
     output_high(PIN_a0); // rest

// reg_set start
    addres =   0x02;
    reg_data = 0x40;
    printf("%X\r\n",reg_data);
    printf("%X\r\n",addres);
    output_low(PIN_a1); // cs
    spi_write(0x20);
    spi_write(addres); 
    spi_write(reg_data);
    output_high(PIN_a1); // cs

    addres =   0x04;
    reg_data = 0x80;
    printf("%X\r\n",reg_data);
    printf("%X\r\n",addres);
    output_low(PIN_a1); // cs
    spi_write(0x20);
    spi_write(addres); 
    spi_write(reg_data);
    output_high(PIN_a1); // cs

    addres =   0x05;
    reg_data = 0x88;
    printf("%X\r\n",reg_data);
    printf("%X\r\n",addres);
    output_low(PIN_a1); // cs
    spi_write(0x20);
    spi_write(addres); 
    spi_write(reg_data);
    output_high(PIN_a1); // cs

// spi read test
    printf("SPI READ TEST \r\n");
    output_low(PIN_a1); // cs
    spi_write(0x20);
    spi_write(0x7f);   
    output_high(PIN_a1); // cs
    delay_us(1);

    output_low(PIN_a1); // cs
    spi_write(0x21); 
    read_data = spi_read();
    printf("%X\r\n",read_data);
    output_high(PIN_a1); // cs
    printf("END");
 
    while(1)
    {
    }
}

« WM8741動かず・・・・・ | トップページ | ATAPIコントローラーは中止 »

オーディオ機器の自作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/511109/47118655

この記事へのトラックバック一覧です: CS8416のソフトモードの試作:

« WM8741動かず・・・・・ | トップページ | ATAPIコントローラーは中止 »