1
\$\begingroup\$

Assume you have an MCU running at 80Mhz (Currently working with TI M4)
This MCU has 128kB of memory allocating some data.

What would be the proper way to transmit this data in its raw form (bits only, no start bits, no end bits, no handshake, no acks, no gaps, no protocol) over one of the MCUs pins and a clock on another pin.

I need to reach 20Mhz, minimum 15Mhz. I was thinking of using an FPGA but an MCU would be much easier (and cost effective).

SPI can work at 1/4 the MCU speed so, technically, it is possible to run SPI on Tiva in 20Mhz. but I do not need the SPI protocol...

\$\endgroup\$
  • 4
    \$\begingroup\$ SPI doesn't really have much of a protocol beyond sending bits with a clock, what exactly is wrong with SPI? \$\endgroup\$ – Gorloth Jan 27 '15 at 22:22
  • \$\begingroup\$ By way of clarification, do you mean 20 Mbits per sec (almost 3Mbytes/sec)? Theres no way to send 20M data points per second (20Mbytes/sec) with an 80 MHz clock. \$\endgroup\$ – Scott Seidman Jan 27 '15 at 22:40
  • \$\begingroup\$ Look for continuous SPI mode. You you are free to transmit as many bytes as you want in a frame BUT it is up to your software protocol to correctly handle the data. \$\endgroup\$ – spearson Jan 27 '15 at 22:41
  • \$\begingroup\$ At present, I need to send 14.5Mbits/sec \$\endgroup\$ – Gilad Jan 27 '15 at 23:37
  • \$\begingroup\$ the chip you're using is CC3200... isn't it? \$\endgroup\$ – user1906583 Jan 28 '15 at 0:03
6
\$\begingroup\$

The SPI peripheral should be the perfect solution for this. Since SPI output on the serial output is 1 for 1 with the data loaded into the transmit register you should be good to go. The main thing to consider is that you get 8 clocks (if dealing with byte data) @ the 20MHz to have the software get the next byte from memory ready to be output.

You may want to investigate. Some MCU's have internal DMA channels built in which can be used to hose data from memory to a peripheral. This would be an excellent way for your application.

\$\endgroup\$
0
\$\begingroup\$

What about an LVDS serializer?

It's probably not the cheapest of solutions but definitely an easy one. Just duplicate the remaining parallel bits or keep them @ 1 or 0.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.