I reviewed \WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\COMMON_TI\WAVEDEV2\hwctxt.cpp for McBSP sample codes. My system has 2 AM3505 processor back to back with McBSP2 for data communication interface. From hwctxt.cpp, my understanding is the call back functions work as follow:
For data transmission:
1. I have a logical driver (LD) DLL initiates a transmission command
m_fnTxCommand(kExternalDrvrDx_Start, m_pCallbackData, (PortConfigInfo_t*)&m_PlayPortConfigInfo);
2. LD receives PopulateTxBuffer from BSP. LD populates command data to DMA tx buffer.
3. LD receives TxCommand notification kExternalDrvrDx_Start.
4. LD receives TxCommand notification kExternalDrvrDx_Stop when the transmission is done.
For data receive:
5. LD initiate receive command during start up:
m_fnRxCommand(kExternalDrvrDx_Start, m_pCallbackData, (PortConfigInfo_t*)&m_PlayPortConfigInfo);
6. When data available, BSP invoke PopulateRxBuffer(). LD pass data back to application through
point to point message queue.
7. LD never stop input DMA during run-time.
8. LD stops input DMA during shutdown.
From the WinCE BSP ARM-A8 User Guide, I am thinking that should be able to use the I2S master and I2S slave default profiles for my 2 processors. Please let me know if you have any inputs on this topic. Also, do you see any misunderstanding on the data receive on items 5-8?
Thanks a lot,
Dennis