<div style="color:black;font: 10pt Arial, Helvetica, sans-serif;">
<div> <font size="2">David,</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">It has been some time since I have written a software UART, (ack 15 years) but I do remember a handy diagnostic technique that I employed which is to generate a brief pulse on a GPIO pin when sampling each data bit and also a pulse when recognizing a start bit which I typically performed with an edge triggered interrupt. This pulse was used to trigger and oscilloscope and the sample pulses were overlaid with the data stream on the scope display. I never sampled more that one time within a bit time on anything I ever wrote, but of course that might be an option.<br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">I assume some of your devices have a low data rate, e.g. 9600 baud. Higher baud rates can be tough to deal with.  I can't remember if I ever used a dedicated timer, but that might prove very effective in being able to accurately time pulses as long as you can get around logging counts within a single bit time of your data stream.  I would think polling would fail before timer input capture as far as problems with interrupt latency...</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">Of course for transmission using a timer is real handy since with output compare register and interrupts you can synthesize "exact" bit timings provided your timer has the needed prescaler. I guess that is the nice thing about modern 32 bit MCUs, real nice ability to program the frequency you want. <br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">Ron Grant<br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2"></font><br>
</div>

<div> <br>
</div>

<div> <br>
</div>

<div style="font-family:arial,helvetica;font-size:10pt;color:black">-----Original Message-----<br>
From: David Anderson via DPRGlist <dprglist@lists.dprg.org><br>
To: dprglist@lists.dprg.org<br>
Sent: Wed, May 6, 2020 10:46 pm<br>
Subject: [Dprglist] STM32 software uart<br>
<br>

<div dir="ltr">Hello DPRG,<br>
</div>

<div dir="ltr"><br>
</div>

<div dir="ltr">As discussed in Tueday's RBNO, I'm trying to port my jBot code to the <br>
</div>

<div dir="ltr">STM32F411RE and have run out of UARTS.  I need 5 and the board only <br>
</div>

<div dir="ltr">supports 3 in hardware (USART1, USART2, USART6).  So I was looking at <br>
</div>

<div dir="ltr">adding another CPU, a teensy, and using SPI or I2C for comm between the <br>
</div>

<div dir="ltr">two boards.<br>
</div>

<div dir="ltr"><br>
</div>

<div dir="ltr">I found several software uarts but all were for sale.  Turns out I <br>
</div>

<div dir="ltr">didn't look hard enough.  There is a free one available from ST Micros <br>
</div>

<div dir="ltr">it self:  stsw-stm3156.  It requires an available timer, which I think <br>
</div>

<div dir="ltr">I  have, and a couple of free GPIO pins.  I've downloaded the sofware <br>
</div>

<div dir="ltr">and docs and am cautiously optimistic...<br>
</div>

<div dir="ltr"><br>
</div>

<div dir="ltr">dpa<br>
</div>

<div dir="ltr"><br>
</div>

<div dir="ltr"><br>
</div>

<div dir="ltr">_______________________________________________<br>
</div>

<div dir="ltr">DPRGlist mailing list<br>
</div>

<div dir="ltr"><a ymailto="mailto:DPRGlist@lists.dprg.org" href="mailto:DPRGlist@lists.dprg.org">DPRGlist@lists.dprg.org</a><br>
</div>

<div dir="ltr"><a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br>
</div>
</div>
</div>