OSDN Git Service

チケット #25999 「SIOポートのピン割り当ての変更」に対応
[toppersasp4lpc/asp.git] / asp / target / lpcxpresso1768_gcc / target_config.c
index 68f330c..a184226 100644 (file)
 #include "target_syssvc.h"
 
 /**
- * \brief UART0のTX信号にピンを割り付けるためのビットフィールド定義
+ * \brief UART0のTX信号(P0.2)にピンを割り付けるためのビットフィールド定義
  *
  */
-#define PINSEL_UART0_TX        0x10
+#define PINSEL_UART0_TX        (0x01<<4)
 
 /**
- * \brief UART0のRX信号にピンを割り付けるためのビットフィールド定義
+ * \brief UART0のRX信号(P0.3)にピンを割り付けるためのビットフィールド定義
  *
  */
-#define PINSEL_UART0_RX        0x40
+#define PINSEL_UART0_RX        (0x01<<6)
 
+/**
+* \brief UART1のTX信号(P2.0)にピンを割り付けるためのビットフィールド定義
+ *
+ */
+#define PINSEL_UART1_TX        (0x02)
+
+/**
+ * \brief UART1のRX信号(P2.1)にピンを割り付けるためのビットフィールド定義
+ *
+ */
+#define PINSEL_UART1_RX        (0x02<<2)
+
+/**
+ * \brief UART2のTX信号(P0.10)にピンを割り付けるためのビットフィールド定義
+ *
+ */
+#define PINSEL_UART2_TX        (0x01<<20)
+
+/**
+ * \brief UART2のRX信号(P0.11)にピンを割り付けるためのビットフィールド定義
+ *
+ */
+#define PINSEL_UART2_RX        (0x01<<22)
 
+/**
+ * \brief UART3のTX信号(P0.0)にピンを割り付けるためのビットフィールド定義
+ *
+ */
+#define PINSEL_UART3_TX        (0x02)
 
+/**
+ * \brief UART3のRX信号(P0.1)にピンを割り付けるためのビットフィールド定義
+ *
+ */
+#define PINSEL_UART3_RX        (0x02<<2)
 
+/**
+ * \brief PCOMPレジスタのUART2ビット
+ * \details
+ * UART2は、デフォルトでは電源オフなので、使う前にオンにしなければならない。
+ *
+ */
+#define PCUART2 (1<<24)
+
+/**
+ * \brief PCOMPレジスタのUART3ビット
+ * \details
+ * UART3は、デフォルトでは電源オフなので、使う前にオンにしなければならない。
+ *
+ */
+#define PCUART3 (1<<25)
 
 /**
  * \brief ターゲット依存部 初期化処理
@@ -104,10 +152,32 @@ void target_initialize(void)
 
 
        /*
-        *  I/Oポートの初期化
+        *  SIOポートの初期化
+        *
+        *  以下のコードは、SIO_PORTIDの値に応じて自動的にピン・コンフィギュレーションを行うが、
+        *  これはLPC1768の一部機能に過ぎないことに注意。LPC1768は、UART1や2の割り当て先を複数
+        *  種類持っている。以下のコードはそれらのうちの一つに対応しているにすぎない。必要に応じて
+        *  アプリケーション・プログラマが書き換えて使うこと。
         */
-       /* bit5:4=01, bit7:6=01, ピンをUART0に割り当てる。*/
-       LPC_PINCON->PINSEL0 = PINSEL_UART0_TX | PINSEL_UART0_RX;
+#if (SIO_PORTID==1)
+       /* Port0.2,3 ピンをUART0に割り当てる。*/
+       LPC_PINCON->PINSEL0 |= PINSEL_UART0_TX | PINSEL_UART0_RX;
+#elif (SIO_PORTID==2)
+       /* Port2.0,1 ピンをUART1に割り当てる。*/
+       LPC_PINCON->PINSEL4 |= PINSEL_UART1_TX | PINSEL_UART1_RX;
+#elif (SIO_PORTID==3)
+       /* Port0.10,11 ピンをUART2に割り当てる。*/
+       LPC_PINCON->PINSEL0 |= PINSEL_UART2_TX | PINSEL_UART2_RX;
+       /* UART2 の電源をオンにする */
+       LPC_SC->PCONP |=  PCUART2;
+#elif (SIO_PORTID==4)
+       /* Port0.0,1 ピンをUART3に割り当てる。*/
+       LPC_PINCON->PINSEL0 |= PINSEL_UART3_TX | PINSEL_UART3_RX;
+       /* UART3 の電源をオンにする */
+       LPC_SC->PCONP |=  PCUART3;
+#else
+#error "SIO_PORTID NOT Supported"
+#endif
 
 
        /*