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!