Цитата
Не ясно, где хранятся сами данные, полученные от кодека.
В файле processing_isr.asm вверху написано где хранятся принимаемые и передаваемые данные:
Код
rx_buf[16] - DSP SPORT recieve buffer
Slot # Description DSP Data Memory Address
------ -------------------------------------- -------------------------------------------------
0 AD1885 Tag Phase DM(rx_buf + 0) = DM(rx_buf + TAG_PHASE)
1 Status Address Port DM(rx_buf + 1) = DM(rx_buf + STATUS_ADDRESS_SLOT)
2 Status Data Port DM(rx_buf + 2) = DM(rx_buf + STATUS_DATA_SLOT)
3 Master PCM Capture (Record) Left Chan. DM(rx_buf + 3) = DM(rx_buf + LEFT)
4 Master PCM Capture Right Channel DM(rx_buf + 4) = DM(rx_buf + RIGHT)
5 - 15 NOT USED
tx_buf[16] - DSP SPORT transmit buffer
Slot # Description DSP Data Memory Address
------ -------------------------------------- --------------------------------------------------
0 ADSP-219x Tag Phase DM(tx_buf + 0) = DM(tx_buf + TAG_PHASE)
1 Command Address Port DM(tx_buf + 1) = DM(rx_buf + COMMAND_ADDRESS_SLOT)
2 Command Data Port DM(tx_buf + 2) = DM(rx_buf + COMMAND_DATA_SLOT)
3 Master PCM Playback Left Channel DM(tx_buf + 3) = DM(rx_buf + LEFT)
4 Master PCM Playback Right Channel DM(tx_buf + 4) = DM(rx_buf + RIGHT)
5 - 15 NOT USED
********************************************************************************
*********************/
То есть в массивах rx_buf и tx_buf. А уже в процедуре обработки прерывания данные из нужных ячеек массива rx_buf копируются в Left_Channel и Right_Channel. Процедура обслуживания прерывания вызывается по каждому отсчету, поэтому двух байтов для каждого канала достаточно.
Цитата
Да, и кстати, что означают все эти 256 bit frame size, 16-bit words и 16 channels?
Это формат работы последовательного порта - он работает в многоканальном режиме с 16битными данными, потому что кодек выдает на кажом интервале дискретизации сразу данные левого канала, правого канала и служебную информацию. Почитайте подробнее даташит на кодек и главу руководства по процессору, где описывается последовательный порт.