<< Chapter < Page Chapter >> Page >

More information about the RTDX module and the commands that can be used with it are in the TMS320 DSP/BIOS User's Guide (spru423) and the TMS320C5000 DSP/BIOS API Reference Guide (spru404) .

The following example shows a simple C program that will echo received data back through the output channel. This files assumes that the main.c file has declared and enabled the input and output channels. The project file and all the necessary files are available from v:/ece420/55x/block_rtdx . MATLAB GUI files that are made to interface with this project are rtdx_text.m and rtdx_echotext.m .

#include "dsk5510_dual3006cfg.h" #include "dsk5510.h" #include "swi_process.h" #include "dsplib.h" #include "rtdx.h" // Include file for rtdx functionality extern RTDX_input_channel ichan; //ichan has been declared in main.c extern RTDX_output_channel ochan; //ochan has been declared in main.c int recvd; int sentNew = 0 ; // all data processing should be done in SWI_ProcessBuffer void SWI_ProcessBuffer() { static unsigned int mbox_value = 0; short *psrc, *pdest; mbox_value |= SWI_getmbox(); // buffers are only processed when both transmit and receive are ready if((mbox_value & DMA_RECEIVE_DONE) && (mbox_value & DMA_TRANSMIT_DONE)) { mbox_value = 0; // get buffer pointers psrc = receive_buffer[receive_buffer_to_process_index]; pdest = transmit_buffer[transmit_buffer_to_fill_index]; if (!RTDX_channelBusy(&ichan)) { // read only when not busy RTDX_readNB(&ichan, &recvd, sizeof(recvd)); sentNew = 1; } if (sentNew == 1) { // echo back when data has been received RTDX_write(&ochan, &recvd, sizeof(recvd)); sentNew = 0; } receive_buffer_processed = 1; // flag receive buffer as processed transmit_buffer_filled = 1; // flag output buffer as full } }
Got questions? Get instant answers now!

Using matlab to access the dsp board (pc)

MATLAB can be used to access the data coming from the DSP board. A simple typing/echo GUI for the block_rtdx project has been provided. An interface can also be programmed in Visual Basic. The setup and transfer/receive commands for Matlab will be described below.

Sending data

Before accessing the DSP board, it must be initialized through MATLAB. This is done with this code: h = actxserver('RTDX'); which sets the port with all necessary parameters. The port is still not open for writing. To open the port, specify the name of the channel you would like to open in the command: invoke(h,'Open','ichan','W'); To write to the buffer, you invoke h with a 'Write' parameter and the data to send. invoke(h,'Write',int16(v)); In this case, v was a char and we wanted to send the ASCII value. (There is a limitation to the ASCII converter in Matlab: it does not take all possible key presses.) Multiple channels can be opened in this manner. When there are multiple channels open, the write will be to the most recently opened channel.

Before finishing a function, or before executing a read, the port should be closed. The port is closed with the command: invoke(h,'Close');

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Digital signal processing laboratory (ece 420 55x). OpenStax CNX. Jan 18, 2010 Download for free at http://cnx.org/content/col10397/1.10
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Digital signal processing laboratory (ece 420 55x)' conversation and receive update notifications?

Ask