Sending data serially from USB/RS485 to RS485 C code in Windows - c

I'm trying to setup half duplex communication in Windows10 in my program. I have my USB connected to COM3 which is converted to a RS485 connection using a converter. Most of the available information out there are using Linux systems which does not work in Windows. How do I send and receive data from the COM port to the hardware connected by RS485?

Related

How does serial console communication work in a microcontroller?

My doubt is regarding the physical layer of the communication, I know from practice that for using for example teraterm to communicate with a MCU is simply enabling and configuring an UART peripheral, and then connect via USB the microcontroller and voila.
But it doesnt make sense to me yet that if USB connects to DN and DP, and an UART uses RX and TX, how does the host effectively communicates to the microcontroller?
There are two possibilities.
You connect to a USB/UART bridge such as devices made by FTDI or Prolific,
The microcontroller has a USB device controller and USB stack implementing the CDC/ACM device class (virtual COM port).
In the first instance, the bridge chip presents the CDC/ACM device to the host and exchanges data with a UART connected to the microcontroller UART. I/O control such as setting the baud rate have no impact on the USB connection, rather they are used to configure the UART link.
In the bridge arrangement, the bridge chip may be on the micro board, or it may be in a USB/serial adapter cable. Moreover internally the bridge chip is a microcontroller with a CDC/ACM device stack.
Unlike say RS-232, USB is not a peer-to-peer full duplex connection, and is not merely an electrical connection; USB requires quite complex device and host controllers and is more analogous to a device bus such as PCI than it is to UART serial connections. A CDC/ACM class device conforms to a specific protocol to allow a "virtual" UART to appear at the host. The UART you see at the PC is emulated, and is not physically the UART in the bridge.
The physical actual USB connection is a master-slave connection, with data and I/O control commands (such as baud rate and flow control) sent in USB packets to be unpacked, interpreted and transferred to the application layer via the CDC/ACM USB stack. In this arrangement the device, acting as a slave cannot initiate an exchange; rather the host continuously polls the device to which the device may return a packet containing its "tx" data. The polling and data rate of USB are fast enough to allow the simplex master-slave exchange to emulate a full-duplex UART connection, at higher throughput than can normally be achieved by a typical real UART, and certainly faster than a physical RS-xxx connection.
You can get an idea of how all this works by observing the raw USB data exchange using a tool such as WireShark. You will see that a lot more than just your application "serial" data is being exchanged.
You need to use a uart-usb interface IC that can convert uart to usb (and vice versa).

Microcontroller not recognized at USB port when connected via pins

Im having issues with my TI LAUNCHXL-F28379D. I have it connected to the laptop I am trying to send data to/from via pins P19 (SCIBRxD) and P18 (SCIBTxD), as well as GND and 5V via J16, using a USB Type B cord to which I sautered pin connectors. I'm sure power is being supplied to the board as when I plug the 5V cable of the USB cable, the RGB lights and 3 other small ones turn on. However, the Computer does not recognize ithe controller at the port - it only recognizes if if it is connected via the board's Mini-USB port. I've also written a C Program which opens the COM port and reads data - but this does not work without my knowledge of the COM port number, usually found in Device Manager. I cannot get any further in my project without the port number and it is very annoying. I will attempt to resauter a new USB cable, but if there are any other possible solutions, or if I'm doing something wrong, please let me know.
Absolutely all feedback is appreciated!
The SCIBRxD and SCIBTxD pins belong to the SCI peripheral in the microcontroller. This peripheral implements a UART port (a.k.a. COM port, a.k.a. TTL serial port). It is not a USB port. Nothing useful will happen if you connect it to a USB port, because it is not compatible with USB in any way.
USB-to-UART adapters (a.k.a. USB-to-serial adapters) do exist. There is one built into the LaunchPad. The UART side of the adapter is connected to the SCIB pins, and the USB side of the adapter is connected to the USB port.

print data to different terminal IAR

I am working on a project which contains acquisition of ECG data with the ADS1293EVM. MSP430F5529 is part of this board as well. For the communication between analog part of the board and microcontroller, I am using SPI and there is also FET Debugger from TI to program the microcontroller. Now I am printing data using printf to a terminal I/O which is part of the IAR software.
However, I would like to print ECG data to the terminal app in PC or to LabView, not in Terminal I/O in IAR software. The board is connected to the PC by USB so there is UART port in device manager. Is there any possibility?
Yes it is possible. You can push all the data on UART which is used in communication between PCB and PC. Than you can use any serial monitor for getting data displayed.
The only connection between your board and the PC is USB, so you have to implement a virtual USB COM port (CDC). TI's USB stack implements such an interface.

Sending tcp/ip packet( or MQTT packet) from ARM cortex-m4 microcontroller UART to telit modem

I am currently using NXP micro-controller which is ARM-Cortex-m4.
I want to use UART of micro-controller to connect to UART of Telit Modem.
Are there any helpful links where I can get source code or links for sending tcp/ip packet from microcontroller to modem using UART as communication channel.
Can I send directly MQTT packet from UART to Telit modem?(Another sub question)
What protocol should I follow?
Telit modems provide a wide set of AT commands for TCP/UDP, so you can send through them any data based on protocol that is conveyed through TCP/UDP, and this includes MQTT.
Explaining all sockets-related AT commands would be too wide. I can suggest starting with the following command (you can find them in AT command user guide):
AT#SD
AT#SH
AT#SCFG
All commands related to PDP context activation, such as +CGDCONT, #SGACT and so on.

How to read data from USB port using C

I have sensor node connected to USB port that sense temperature, humidity and light and send the data to PC.
What piece of code will help me to read that data from the USB port in normal C.
Application of the nodes is built on C using Eclipse.
I looked into the specifications of your board and it seems like it's a FTDI chip. This means it's exactly the same way you read from a serial port.
Here is how you program the serial port in Windows (it hasn't changed in a long time).

Resources