tsSerialPortSetup
シリアルポートの基本設定を行います。利用する UART ハードウェアと入出力用の FIFO メモリの指定を行います。
uint8
u8SerialPort
シリアルポート (E_AHI_UART_0 または E_AHI_UART_1 を指定する)
uint8*
pu8SerialRxQueueBuffer
Rx (UART受信) 用のFIFOバッファーへのポインタを指定する。このバッファーは静的に確保する。
uint16
u16SerialRxQueueSize
Rx FIFOバッファーのサイズ
uint8*
pu8SerialTxQueueBuffer
Tx (UART送信) 用のFIFOバッファーへのポインタを指定する。このバッファーは静的に確保する。
uint16
u16SerialTxQueueSize
Tx FIFOバッファーのサイズ
uint32
u32BaudRate
ボーレート (u32BaudRate) : 9600〜115200を指定します。または MSB を設定し 0x80XX00YY なら、XXがCBP、YYがディバイザの設定となる(半導体ペリフェラルマニュアル参照)
uint8
u8RX_FIFO_LEVEL
E_AHI_UART_FIFO_LEVEL_1 を指定する。

u32BaudRateについて

標準的なボーレートは 9600,19200,38400,115200bps です。これ以外の値、また範囲外の値、またCBP,ディバイザによる設定も可能ですが、サポート対応外とします。
高速なボーレート (230400,250000,500000,1000000[最大値]) を設定した場合、取りこぼし等処理の問題が顕著になる場合があります。

サンプルコード

1
tsSerialPortSetup sSerPort;
2
3
void vInitSer() {
4
/* Create the debug port transmit and receive queues */
5
static uint8 au8SerialTxBuffer[256];
6
static uint8 au8SerialRxBuffer[256];
7
8
/* Initialise the serial port to be used for debug output */
9
memset(&sSerPort, 0, sizeof(tsSerialPortSetup));
10
sSerPort.pu8SerialRxQueueBuffer = au8SerialRxBuffer;
11
sSerPort.pu8SerialTxQueueBuffer = au8SerialTxBuffer;
12
sSerPort.u32BaudRate = u32Baud;
13
sSerPort.u16AHI_UART_RTS_LOW = 0xffff;
14
sSerPort.u16AHI_UART_RTS_HIGH = 0xffff;
15
sSerPort.u16SerialRxQueueSize = sizeof(au8SerialRxBuffer);
16
sSerPort.u16SerialTxQueueSize = sizeof(au8SerialTxBuffer);
17
sSerPort.u8SerialPort = UART_PORT_SLAVE;
18
sSerPort.u8RX_FIFO_LEVEL = E_AHI_UART_FIFO_LEVEL_1;
19
20
SERIAL_vInit(&sSerPort);
21
}
Copied!
最終更新 8mo ago
リンクのコピー