We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am working on LM3S8962 and need to write a program to comunicate with PC via UART. I use Labview inline C node to write codes using ARM_Serial.c which is from Keil Software.
The file has
int ARM_Serial_InitPort (int serDevNo, unsigned long baudrate, unsigned int databits, unsigned int parity, unsigned int stopbits) int ARM_Serial_Write (int serDevNo, const char *buffer, int *length)
I tried to use them to control serial port, but it didn't work well. I used U0TX, U0RX and GND pins on micro controller to connect to a serial port in PC.
I couldn't find any information about ARM_Serial_InitPort and ARM_Serial_Write functions on the internet. Any information or tips about it would be very appreciatted.
Thank you.
Masa
Yes, it is.
The header of the c file says
/*---------------------------------------------------------------------------- * Name: ARM_Serial.c * Purpose: For Luminary Micro LM3SXXXX microcontrollers * adapted from Template generic driver for LabVIEW * Version: v1.00 * Note(s): *---------------------------------------------------------------------------- * This file is part of the uVision/ARM development tools. * This software may only be used under the terms of a valid, current, * end user licence from KEIL for a compatible version of KEIL software * development tools. Nothing else gives you the right to use it. * * Copyright (c) 2007 Keil Software. *---------------------------------------------------------------------------*/
These codes bellow are test codes I wrote, which doesn't work. Did I make a mistake or do I need to do something else to use serial port?
//initialize serial port int ret; ret = ARM_Serial_InitPort(0, 9600, 8, 0, 10); printf("initialize-ret:%d",ret); //Write data to serial port int l = 5; int ret; char *x; x="test"; ret = ARM_Serial_Write(0, x, &l); printf("writing-ret:%d\n",ret);
So, I guess that's where you need to look for documentation on this?
Yes. But I couldn't find any information about it.
By the way, I noticed that my microcontroller which is connected to PC with USB cable creates a virtual com port in PC. And it seems that the virtual com port is receiving some data from the microcontroller instead of actual serial port.
I realized that I forgot to use ARM_Serial_OpenPort to open a serial port. Using the function, now it is communicating via serial port, however, characters get garbled. Is there any mistake?
int ret; // PortNumber, serialDeviceNumber=PortNumber+1 ret = ARM_Serial_OpenPort(1,2); //serialDeviceNumber, Baud, DataBits, Parity, StopBits ret = ARM_Serial_InitPort(2, 9600, 7, 0, 1); //write data to serial int l = 5; int ret; char *x; x="abcd"; ret = ARM_Serial_Write(2, x, &l);
Did you intend to use 7-bit transfers?
Have you verified baudrate with an oscilloscope?
I tried 7-bid, but It didn't work.
>Have you verified baudrate with an oscilloscope? Not yet. I will check it.
You _tried_ 7-bit?
But your posted code contains:
ret = ARM_Serial_InitPort(2, 9600, 7, 0, 1);
Isn't that the configuration for 7-bit data?
I tried both 7 bit and 8 bit.
I should have posted the code with 8 bit.