我有一个Infenion XMC relax kit微控制器,我有一个在visual studio(c#)上制作的GUI,我想将GUI与微控制器连接起来。我不知道如何继续这个。该控制器只有microusb输入,因此没有串口连接。
任何帮助将不胜感激,也欢迎任何教程建议。
答案 0 :(得分:2)
从documentation板上有两个USB接口;一个连接到主XMC4500,另一个连接到第二个充当片上调试接口的XMC4500。要与您的应用程序通信,您需要使用连接到主处理器的那个(标记为“X3”),另一个用于编程和调试设备。
USB接口本身什么都不做; USB需要实现设备类的软件栈。要实现的最简单的设备类(因为您的PC OS已经有驱动程序)是CDC / ACM(或虚拟COM端口)。这将允许您使用.NET System.IO.Ports.SerialPort
类与电路板交换信息。
提到USB VCP项目here,但我找不到所提到的代码。也许它包含在开发工具包中,你已经拥有它了吗?
请注意,如果您确实使用片上USB作为设备,那么如果要分发产品,则需要USB供应商ID,除非英飞凌允许开发人员在商业示例代码中使用VID。
请注意,该器件还具有UART(即真正的串行端口),毫无疑问,它可以更简单地工作并且需要更少的软件。 UART的I / O可以映射到一对GPIO引脚,然后您可以将TTL UART to USB bridge cable连接到该引脚,并将其直接插入PC串行端口。这样做的好处是无需自己的VID即可创建USB连接。
答案 1 :(得分:1)
尝试使用此代码读取数据并将其显示在COM3上....
// Create the serial port with basic settings....You will need to modify SerialPort("COM3",9600, Parity.None, 8, StopBits.One); to suit your device.
private SerialPort port = new SerialPort("COM3",
9600, Parity.None, 8, StopBits.One);
[STAThread]
static void Main(string[] args)
{
// Instatiate this class
new SerialPortProgram();
}
private SerialPortProgram()
{
Console.WriteLine("Incoming Data:");
// Attach a method to be called when there
// is data waiting in the port's buffer
port.DataReceived += new
SerialDataReceivedEventHandler(port_DataReceived);
// Begin communications
port.Open();
// Enter an application loop to keep this thread alive
int MyInt = System.Convert.ToInt32(Console.ReadLine());
byte[] b = BitConverter.GetBytes(MyInt);
port.Write(b, 0, 4);
Application.Run();
}
private void port_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
// Show all the incoming data in the port's buffer
Console.WriteLine(port.ReadExisting());
}
答案 2 :(得分:0)
如果您在微控制器上有USB端口,您可以通过两种方式与在PC或任何其他嵌入式设备上运行的GUI进行通信,您可以使用直接USB电缆,也可以将COM端口连同usb一起使用到UART转换器,这可能是您的开发板或外部转换器。如果你有这个转换器,那么你的微控制器的串口必须已经使用过。
案例1:直接USB - 在此模式下,您需要在PC端使用USB库(例如libusb / winusb),它可以将您的应用程序与PC usb硬件连接。另一方面,应该在微控制器上运行usb库,它可以像PC usb库一样运行。
案例2:通过COM端口 - 安装usb到uart转换器的驱动程序然后你可以找到你在设备管理器中连接的设备,你可以识别端口号。您可以扫描C#应用程序中连接的COM端口,也可以手动插入确切的COM端口,并使用可与微控制器通信的串行库。