如何將A9101 A-raw壓縮改成PCM mode

SamYang2023-12-12A9101/A8101101

A9101 CodeC壓縮分成A-raw 8K 8bit & PCM Mode

A-raw壓縮取CodeC的Low 8bit

PCM mode則取High 8bit

  1. 首先需要將ADC/DAC 部分的"CODEC_SRSEL"=[0x0A09]寄存器設成'0x00',此用意是將Sample Rate設定成'8K'採樣率,關閉Alaw Ulaw壓縮

image.png

    2.    ADC部分:    讀取CodeC High 8bit轉存到tmp,注意需要將Low 8 bit也一併讀取出來,但不需要轉存在tmp,tmp只需要保存High 8bit 即可

#ifdef  PCM_Mode
	  	tmp = A9101_ReadReg ( CODEC_ADCRB );
		A9101_ReadReg ( CODEC_ADCRB );

    3.   DAC部分:    先將CODECBUF裡的音頻資料讀取出來,轉存到tmp裡(說明:A9101的CodeC Buffer為2x96 Byte的 2維陣列定義),因此當RXBufIndex > 96時,RxIndex會執行反向'~'的動作,目的是讓RxIndex由"0"變"1",再由"1"變回"0",如此來達到2維

陣列的˙效果,再將tmp裡的資料,設定成PCM mode做DAC輸出,注意:A9101 音頻資料雖然是2維96 Byte的資料,但是在RF上它是1包1包96 Byte來做發送的,並不是一次發送2x96 Byte的資料出去

#ifdef  PCM_Mode
	//SPI
	SPI_Write(CODECBUF[RxIndex][RXBufIndex++] ); 
	tmp  = SPDR; //SPI Read
	  
	 A9101_WriteReg ( CODEC_DACWB, tmp); 
	_nop_();
	A9101_WriteReg ( CODEC_DACWB, 0x00 );






发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。