Microchip PIC24Fの UARTに Software FIFOを実装したシリアル ドライバ>です。 シリアルドライバは、PIC24Fのハードウェア UART 割込 (_U1TXInterrupt, _U2TXInterrupt, _U1RXInterrupt, _U2RXInterrupt) から呼ばれます。また、 2チャンネルの UARTに対して、送信/受信バッファサイズを任意に設定できます。
UARTxは、UART1またはUART2と置き換えてください
RS-232 | RS-232C (D-Sub 9pin メス) |
2400 〜 230kbps | |
送信バッファ 60byte | |
受信バッファ 8byte | |
OBD-II | ISO-9141 |
4800bps | |
送信バッファ 50byte | |
受信バッファ 68byte |
通信速度 | 300 〜 921.6kbps |
FIFOバッファ有 |
回路によって TX/RXのピンを変更する場合は、UARTx_init()関数内を変更してください。
libuart.hのマクロを変更してからコンパイルします。
#define UART1_TX_BUFFER_SIZE 128 #define UART1_RX_BUFFER_SIZE 128 #define UART2_TX_BUFFER_SIZE 50 #define UART2_RX_BUFFER_SIZE 70
送信/受信のサンプルソースコードです。回路図は、OpenSSM Rev.A を想定しています。
#include <p24FJ64GA002.h> #include "table.h" #include "libuart.h" _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & WINDIS_OFF & COE_OFF & ICS_PGx1 & FWDTEN_ON & WDTPS_PS256) _CONFIG2( IESO_OFF & FNOSC_FRCPLL & FCKSM_CSDCMD & OSCIOFNC_ON & IOL1WAY_OFF & I2C1SEL_PRI & POSCMOD_NONE) int main(void) { int buf; /* Fosc = 8.96MHz, Fcy = 17.92MHz, Core 35.84MHz */ CLKDIV = 0; OSCTUN = 0b0000000000011111; SRbits.IPL = 0; TRISA = 0b0000000000000011; TRISB = 0b0000111101100001; UART1_init(115200); UART2_init( 4800); /* 送信受信をループバック. エコー */ while(1){ ClrWdt(); if((buf = UART1_getch()) > 0){ UART1_putch(buf); } if((buf = UART2_getch()) > 0){ UART2_putch(buf); } } return(0); }
コンパイルの確認はしていません (^^;