TinyCLR 0.7.0 and Quailserial ports

Using a Quail mainboard. HW REV.2.01

Has anyone been able to create a serial port on Socket 3?

I can create and use serial ports on Socket 1, 2 and 4 but have not figured out how to use Socket 3.

Socket 1, 2 and 4 are using:
UartProvider\2"; works socket 1 - works
UartProvider\1"; works socket 2 - works
UartProvider\0"; works socket4 - works

I thought this would work for Socket 3.
If I try to use UartProvider\5" (Usart6) for Socket 3
I receive:
An unhandled exception of type 'System.ArgumentException’
occurred in GHIElectronics.TinyCLR.Devices.dll
Exception Invalid id.

I then tried to use: Uart4 - “GHIElectronics.TinyCLR.NativeApis.STM32F4.UartProvider\3”;
I do not receive a exception when using.

However, I cannot find a test signal on any socket pin or screw terminal.

The testing signal writes to RX PC7 - TX PC6
STM32F4_UART_TX_PIN - PIN(C, 6)
STM32F4_UART_RX_PIN - PIN(C, 7)

HELP!

Not a issue for me but I sure would like to know if it’s me
or something “In the works”

Thanks!

Looking at the firmware mappings, TinyCLR-Ports/Device.h at master · ghi-electronics/TinyCLR-Ports · GitHub, there are only UartProvider\0, UartProvider\1, UartProvider\2, and UartProvider\3. For provider 3, it’s on pins PA0 and PA1.

TX Pin PA0 RX PA1 do not connect to socket 3

My simple test:

namespace TinyCLRTest7
{
internal class Program
{
static GpioPin pinTX; //PC6
static GpioPin pinRX; //PC7

    static void Main()
    {
        //These Pins seem correct - Test signals found on socket 3 TX and RX
        pinTX = GpioController.GetDefault().OpenPin(STM32F4.GpioPin.PC6); //Socket 3 pin TX
        pinTX.SetDriveMode(GpioPinDriveMode.Output);
        pinRX = GpioController.GetDefault().OpenPin(STM32F4.GpioPin.PC7); //Socket 3 pin RX
        pinRX.SetDriveMode(GpioPinDriveMode.Output);

        /*
        // TX PIN(A, 0) - Write test Signal was not found on any socket or screw terminal
        // RX PIN(A, 1) - Write test Signal seen on Socket 1 INT
        pinTX = GpioController.GetDefault().OpenPin(STM32F4.GpioPin.PA0); //Socket 3 pin TX
        pinTX.SetDriveMode(GpioPinDriveMode.Output);
        pinRX = GpioController.GetDefault().OpenPin(STM32F4.GpioPin.PA1); //Socket 3 pin RX
        pinRX.SetDriveMode(GpioPinDriveMode.Output);
        */

        // Test signal simple square wave
        while (true)
        {
            pinTX.Write(GpioPinValue.High);
            Thread.Sleep(50);
            pinRX.Write(GpioPinValue.High);
            Thread.Sleep(50);
            pinTX.Write(GpioPinValue.Low);
            Thread.Sleep(50);
            pinRX.Write(GpioPinValue.Low);
            Thread.Sleep(50);
        }// End while

    } //End Main
} //End class

} // End namespace

Again… Not a issue. Just sending information of my findings

Will Georges, are you using the device.h I sent ? It contains the correct definition for UART6 on Socket3 (PC6/7). This should map to UartProvider\5 if I understand correctly.

I don’t know why you get an exception when you specify UartProvider\5, though.

If the Device.h in the ports repo is incorrect, feel free to send a pull request with the corrected version

are you using the device.h - Yes

What I was using:
#define STM32F4_UART_TX_PINS { { PIN(A, 9), AF(7) }, { PIN(D, 5), AF(7) }, { PIN(D, 8), AF(7) }, { PIN_NONE , AF_NONE }, { PIN_NONE , AF_NONE }, { PIN(C, 6), AF(8) } }
#define STM32F4_UART_RX_PINS { { PIN(A, 10), AF(7) }, { PIN(D, 6), AF(7) }, { PIN(D, 9), AF(7) }, { PIN_NONE , AF_NONE }, { PIN_NONE , AF_NONE }, { PIN(C, 7), AF(8) } }

I would rather not mess around with a Repo.

I’m not sure how to do it. I’ll leave that to the experts!