Has anyone used SPORT in TDM or Multi-channel mode ?
If yes, could you share any exmaple code ?
Example related to any Blackfin SoC with SPORT (in MC-mode) is appreciated, I will try porting it.
I am using BF706 EZ-Kit mini for my experiments.
ADSP-BF706
Production
This device is a member of the ADSP-BF70x Blackfin Digital Signal Processor (DSP) product family. The new Blackfin+ processor core combines dual-MAC 16...
Datasheet
ADSP-BF706 on Analog.com
ADSP-BF707
Production
This device is a member of the ADSP-BF70x Blackfin Digital Signal Processor (DSP) product family. The new Blackfin+ processor core combines dual-MAC 16...
Datasheet
ADSP-BF707 on Analog.com
Has anyone used SPORT in TDM or Multi-channel mode ?
If yes, could you share any exmaple code ?
Example related to any Blackfin SoC with SPORT (in MC-mode) is appreciated, I will try porting it.
I am using BF706 EZ-Kit mini for my experiments.
Hi Raam,
We would suggest you to refer the "Descriptor-Based Flow Modes"(Page No: 778/2223) and "DMA Channel Triggers"(Page No: 786/2223) sections in the ADSP-BF707 HRM manual.
www.analog…
Hi Ranji,
I modified the example for BF706, SPORT1 Channel A.
Works like a charm, Thank You.
One more question here:
In the SPORT2_Transmitter_Multichannel_Core0 example after the DMA has transmitted the BUFF_SIZE words of data, it stops. I wish to immediately tell the DMA to Tx another buffer of same size(BUFF_SIZE ) and then stop, sort of a PING-PONG way. How do I do that here in this example?
Hi Raam,
We would suggest you to refer the "Descriptor-Based Flow Modes"(Page No: 778/2223) and "DMA Channel Triggers"(Page No: 786/2223) sections in the ADSP-BF707 HRM manual.
www.analog.com/.../BF70x_BlackfinProcessorHardwareReference.pdf
Also, please refer the attached code for ADSP-SC58x which is configured in DMA Descriptor list mode. You can refer the DMA configurations in the example and modify accordingly for ADSP-BF706.
Regards,
Ranjitha R
Ranji, Thank you, I modified the sample code for BF706 and the code works great.
Great example !!
While I was experimenting with this sample code, I also came across another sample code for BF533, which achieved the PING-PONG transmit using the following logic.
It declared a 2D array of size [2][BUF_SIZE] and initialized it with the intial data to transmit. Programmed the DMA in Auto-Buffer mode and for 2D-transfers. It also programmed the SPORT for raising an iterrupt after the XCOUNT(BUF_SIZE in this case) bytes got transferred. And, In the ISR, just figure out which element (0 or 1) of the 2D-array just got transmitted, and load this element with fresh data, while the DMA transferred the other element, and so on.
What is your view on this logic? Is it also a correct implementation of DMA in ping-pong mode ?