PLEASE REPLY.............NCB 1321x baud rate

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PLEASE REPLY.............NCB 1321x baud rate

1,832 Views
bitasobhani
Contributor III

Hi all

I want to connect an optical port with baud rate 300 to 1321x NCB board. But the board baud rate can only be set from 1200 to 38400 (as below). How can I change the baud rate to 300?

Thanks

 

/* SCI baud rate = BUSCLK/(16?Baud rate)
 * Note that not all baud rates work for all clock rates. The actual baud rate
 * may deviate too much from the RS232 specification.
 */
#ifndef gSystemClock_d
#define gSystemClock_d     16           /* 16 MHz. */
#endif

typedef uint16_t UartBaudRate_t;
#if gSystemClock_d == 8
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x01A1)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x00D0)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x0068)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x0034)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x001A)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x0011)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x0009)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0004)   /* Might not work for all clients */
#endif

#if gSystemClock_d == 12
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x0271)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x0139)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x009C)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x004E)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x0027)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x0014)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x000D)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0007)
#endif

#if gSystemClock_d == 16
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x0341)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x01A1)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x00D0)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x0068)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x0034)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x001A)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x0011)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0009)   /* Might not work for all clients */
#endif

#if gSystemClock_d == 16780
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x036A)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x01B5)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x00DA)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x006D)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x0037)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x001B)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x0012)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0009)
#endif


/*list of possible baudrates */
#define  Baudrate_1200   gUARTBaudRate1200_c
#define  Baudrate_2400   gUARTBaudRate2400_c
#define  Baudrate_4800   gUARTBaudRate4800_c
#define  Baudrate_9600   gUARTBaudRate9600_c
#define  Baudrate_19200  gUARTBaudRate19200_c
#define  Baudrate_38400  gUARTBaudRate38400_c
#define  Baudrate_57600  gUARTBaudRate57600_c
#define  Baudrate_115200 gUARTBaudRate115200_c

/* Default baud rate. */

#ifndef gUartDefaultBaud_c
#define gUartDefaultBaud_c  Baudrate_38400
#endif

Labels (1)
0 Kudos
5 Replies

460 Views
peg
Senior Contributor IV

Hi bitasobhani,

 

Seems to me you can extend these tables yourself down to 300 baud. Probably the only reason this was not done is it is rare to use such low rates these days. Simply multiply the 1200 value by 4.

 

0 Kudos

460 Views
bitasobhani
Contributor III

Thanks for reply

I added 300 baud rate to the table (as below). It works but receives bytes with error or some bytes are missed. 

 

#ifndef gSystemClock_d
#define gSystemClock_d     16           /* 16 MHz. */
#endif

typedef uint16_t UartBaudRate_t;
#if gSystemClock_d == 8
#define gUARTBaudRate300_c      ((UartBaudRate_t) 0x0684)
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x01A1)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x00D0)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x0068)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x0034)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x001A)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x0011)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x0009)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0004)   /* Might not work for all clients */
#endif

#if gSystemClock_d == 12
#define gUARTBaudRate300_c      ((UartBaudRate_t) 0x09C4)
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x0271)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x0139)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x009C)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x004E)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x0027)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x0014)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x000D)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0007)
#endif

#if gSystemClock_d == 16
#define gUARTBaudRate300_c      ((UartBaudRate_t) 0x0D04)
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x0341)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x01A1)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x00D0)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x0068)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x0034)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x001A)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x0011)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0009)   /* Might not work for all clients */
#endif

#if gSystemClock_d == 16780
#define gUARTBaudRate300_c      ((UartBaudRate_t) 0x0DA8)
#define gUARTBaudRate1200_c     ((UartBaudRate_t) 0x036A)
#define gUARTBaudRate2400_c     ((UartBaudRate_t) 0x01B5)
#define gUARTBaudRate4800_c     ((UartBaudRate_t) 0x00DA)
#define gUARTBaudRate9600_c     ((UartBaudRate_t) 0x006D)
#define gUARTBaudRate19200_c    ((UartBaudRate_t) 0x0037)
#define gUARTBaudRate38400_c    ((UartBaudRate_t) 0x001B)
#define gUARTBaudRate57600_c    ((UartBaudRate_t) 0x0012)
#define gUARTBaudRate115200_c   ((UartBaudRate_t) 0x0009)
#endif
0 Kudos

460 Views
bigmac
Specialist III

Hello,

 

If you are polling the SCI module for received data, you will need to periodically clear the COP timer whilst waiting.  Otherwise it may be possible for COP timeout and reset to occur.

 

Additionally, during multiple byte send operations, you should also periodically clear the COP whilst waiting for the SCI buffer to become empty, ready to accept the next byte.  The transmission time for each byte is 33 milliseconds.

 

Regards,

Mac

 

0 Kudos

460 Views
bitasobhani
Contributor III

Thanks for reply

I am not polling the SCI module. I am using Interrupt routine for receiving bytes. But I receive wrong bytes with my added baud rate 300. 

 

void BeeAppInit
  (
  void
  )
{
  ...


  Uart1_SetRxCallBack(Uart1RxCallBack);
  Uart1_SetBaud(gUARTBaudRate300_c);
 
  ...


}

 

static void Uart1RxCallBack
  (
  void
  )
{
  Uart1_GetByteFromRxBuffer(&byte);
  ... 
}

0 Kudos

460 Views
Mads
Contributor V

Hi,

 

I would suggest that you make a transmission of a 0xAA or 0x55 pattern that you can monitor on an scope so you can validate the UART boadrate is correct.

 

br,

Mads

0 Kudos