HighSpeed Serial Tx (3Mbps) / Rx (2Mbps) + autobaud for FT232R/Prop GPL
Stephen Moraco
Posts: 321
I've been spending the last two weeks on propCAN, my pet
project.
In this post I'm releasing code under GPL for my high speed serial
portion of the project.
I've tried to place·useful documentation within each of the three
objects:
· FT232R-SerialAutobaud.spin
· FT232R-BlockSerialTransmit.spin
· FT232R-BlockSerialReceive.spin
The upload consists of a project for the Demo board· the top
object of which is:· HighSpeedSerialExample-v1.0.spin
In this example I show the use of the three objects. It is intended
to be compiled and downloaded to the demo board and then communicated
with via a serial terminal application (e.g., HyperTerm, minicom).
In my case I download the code to EEPROM.· Then I·tell HyperTerm to
connect.· Wait 2 seconds for the·prop to reset and load the code.· Then
I press the enter key to get a CR sent to the prop.· As soon as it gets
the CR then it will signon with it's findings and then sit in a read loop.
The demo program writes whatever it reads back to the terminal.
(watch your add-a-linefeed setting in your terminal app. In this case
it can interfere!)
NOTE: this is a set of block-send and block-receive routines.· That is
they are designed to reduce communication between cogs by only
transporting data between them on buffer-full or line-end events.
Please read the file headers for the transmit and receive files for
more detail.· You may have to adjust the meaning of line-end for
your use.· Details are in the file headers.
I keep a running narrative of my implementation and testing
at my blog site wherein you will find discussion of these
new routines:·· http://propcandev.blogspot.com
Ive new SPI reorganization results which I'll be posting to
the blog later yet today if you are interested.
Have fun with the objects.· I hope you find them useful.
Please let me know if you have any issues with them.· I'm especially
interested in any code improvements you may find!· And, of course
if you find anything incorrect with them please let me know that
as well.
Regards,
Stephen, KZ0Q
--
http://propcan.moraco.us
http://propcandev.blogspot.com
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
project.
In this post I'm releasing code under GPL for my high speed serial
portion of the project.
I've tried to place·useful documentation within each of the three
objects:
· FT232R-SerialAutobaud.spin
· FT232R-BlockSerialTransmit.spin
· FT232R-BlockSerialReceive.spin
The upload consists of a project for the Demo board· the top
object of which is:· HighSpeedSerialExample-v1.0.spin
In this example I show the use of the three objects. It is intended
to be compiled and downloaded to the demo board and then communicated
with via a serial terminal application (e.g., HyperTerm, minicom).
In my case I download the code to EEPROM.· Then I·tell HyperTerm to
connect.· Wait 2 seconds for the·prop to reset and load the code.· Then
I press the enter key to get a CR sent to the prop.· As soon as it gets
the CR then it will signon with it's findings and then sit in a read loop.
The demo program writes whatever it reads back to the terminal.
(watch your add-a-linefeed setting in your terminal app. In this case
it can interfere!)
NOTE: this is a set of block-send and block-receive routines.· That is
they are designed to reduce communication between cogs by only
transporting data between them on buffer-full or line-end events.
Please read the file headers for the transmit and receive files for
more detail.· You may have to adjust the meaning of line-end for
your use.· Details are in the file headers.
I keep a running narrative of my implementation and testing
at my blog site wherein you will find discussion of these
new routines:·· http://propcandev.blogspot.com
Ive new SPI reorganization results which I'll be posting to
the blog later yet today if you are interested.
Have fun with the objects.· I hope you find them useful.
Please let me know if you have any issues with them.· I'm especially
interested in any code improvements you may find!· And, of course
if you find anything incorrect with them please let me know that
as well.
Regards,
Stephen, KZ0Q
--
http://propcan.moraco.us
http://propcandev.blogspot.com
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Comments
get the receive routine to 3Mbps? Is there means to accomplish what the receive ASM code is currently doing in enough
fewer instructions that this goal can be met? Or can we collectively prove that this is our performance limit for this function...?
(The goal is not to affect the current design requirements [noparse][[/noparse]as described by formal/informal inputs, formal/informal outputs] in any
way other than performance.)
If you have any question over what any portion of the code is doing I'll be glad to answer... and/or improve the internal doc.
Up for this challenge?
-Stephen, KZ0Q
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·