Changeset 318 for asp3_gr_sakura/trunk/arch/rx630_gcc/tSCIF.c
- Timestamp:
- Aug 3, 2017, 10:46:41 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_gr_sakura/trunk/arch/rx630_gcc/tSCIF.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=UTF-8
r317 r318 8 8 * Copyright (C) 2017 by Cores Co., Ltd. Japan 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 10 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 11 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 12 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 13 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 14 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 15 * スコード中に含まれていること. 16 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 17 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 18 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 19 * の無保証規定を掲載すること. 20 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 21 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 22 * と. 23 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 24 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 25 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 26 * 報告すること. 27 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 28 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 29 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 30 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 31 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * FIFOå 59 èµã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ç¨ ç°¡æSIOãã©ã¤ã 43 * FIFO内蔵シリアルコミュニケーションインタフェース用 簡易SIOドライバ 60 44 */ 61 45 … … 65 49 66 50 /* 67 * ããªããã£ããªéä¿¡ï¼åä¿¡é¢æ°68 */ 69 70 /* 71 * åä¿¡ãããã¡ã«æåããããï¼51 * プリミティブな送信/受信関数 52 */ 53 54 /* 55 * 受信バッファに文字があるか? 72 56 */ 73 57 Inline bool_t … … 75 59 { 76 60 /* 77 * åä¿¡ãã©ã°ãONã®ã¨ãã®ã¿åä¿¡ãããã¡ããæåãåå¾ãã.78 * ããã¯, ãã¼ãªã³ã°åä¿¡ã«å¯¾å¿ããããã§ãã.79 * ããã, RX600ã·ãªã¼ãºã§ã¯åä¿¡ãã©ã°ããªããã¨, ã·ã¹ãã ãµã¼ãã¹80 * ã§ã¯åä¿¡å²è¾¼ã¿ã®ä¸ãããããã¼ã¿ãåä¿¡ãã«æ¥ãªããã¨ãã, 常ã«81 * åä¿¡ãããã¡ããæåãåå¾ãã.61 * 受信フラグがONのときのみ受信バッファから文字を取得する. 62 * これは, ポーリング受信に対応するためである. 63 * しかし, RX600シリーズでは受信フラグがないこと, システムサービス 64 * では受信割込みの中からしかデータを受信しに来ないことから, 常に 65 * 受信バッファから文字を取得する. 82 66 */ 83 67 return true; … … 85 69 86 70 /* 87 * éä¿¡ãããã¡ã«ç©ºãããããï¼71 * 送信バッファに空きがあるか? 88 72 */ 89 73 Inline bool_t … … 97 81 98 82 /* 99 * éä¿¡ããæåã®æ¸è¾¼ã¿83 * 送信する文字の書込み 100 84 */ 101 85 Inline void … … 106 90 107 91 /* 108 * ã·ãªã¢ã«I/Oãã¼ãã®ãªã¼ãã³92 * シリアルI/Oポートのオープン 109 93 */ 110 94 void … … 117 101 if (VAR_initialized) { 118 102 /* 119 * æ¢ã«åæåãã¦ããå ´åã¯ãäºéã«åæåããªãï¼103 * 既に初期化している場合は、二重に初期化しない. 120 104 */ 121 105 return; … … 138 122 139 123 /* 140 * SCIãã©ã¤ãã®åæåã«ã¼ãã³ 141 */ 142 143 /* 144 * å²ãè¾¼ã¿è¦æ±å 145 ã¬ã¸ã¹ã¿ã®è¨å®(ISELRi) 124 * SCIドライバの初期化ルーチン 125 */ 126 127 /* 128 * 割り込み要求先レジスタの設定(ISELRi) 146 129 * 147 * ãªã»ããå¤ã¨åãå¤ãè¨å®ãããã¨ã«ãªããã,148 * å¦çã¯çç¥ãã.149 */ 150 151 /* 152 * ã¢ã¸ã¥ã¼ã«ã¹ãããæ©è½ã®è¨å®153 */ 154 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* æ¸è¾¼ã¿è¨±å¯*/130 * リセット値と同じ値を設定することになるため, 131 * 処理は省略する. 132 */ 133 134 /* 135 * モジュールストップ機能の設定 136 */ 137 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* 書込み許可 */ 155 138 sil_wrw_mem(SYSTEM_MSTPCRB_ADDR, 156 139 sil_rew_mem(SYSTEM_MSTPCRB_ADDR) & ~SCI_MSTPCRB_BIT(ATTR_baseAddress)); 157 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* æ¸è¾¼ã¿ç¦æ¢ */ 158 159 /* éåä¿¡ç¦æ¢, SCKn端åã¯å 160 ¥åºåãã¼ãã¨ãã¦ä½¿ç¨ */ 140 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* 書込み禁止 */ 141 142 /* 送受信禁止, SCKn端子は入出力ポートとして使用 */ 161 143 sil_wrb_mem(SCI_SCR(ATTR_baseAddress), 0x00U); 162 144 163 /* ã¯ããã¯é¸æããã(SMR.CKS[1:0]ããããè¨å®) */145 /* クロック選択ビット(SMR.CKS[1:0]ビットを設定) */ 164 146 sil_wrb_mem(SCI_SMR(ATTR_baseAddress), 165 147 (sil_reb_mem(SCI_SMR(ATTR_baseAddress)) & ~0x03) | clk); 166 148 167 /* SMR ã«éä¿¡ï¼ åä¿¡ãã©ã¼ããããè¨å®) */149 /* SMRに送信/ 受信フォーマットを設定) */ 168 150 sil_wrb_mem(SCI_SMR(ATTR_baseAddress), 169 151 sil_reb_mem(SCI_SMR(ATTR_baseAddress)) & (~SCI_SMR_FLG_ENABLE)); 170 152 171 /* ãããã¬ã¼ããè¨å®*/153 /* ビットレートを設定 */ 172 154 sil_wrb_mem(SCI_BRR(ATTR_baseAddress), brr); 173 155 174 /* ãããæé(åºæ¬ã¯ããã¯16ãµã¤ã¯ã«ã®æéã1ãããæéã¨ãªã) */156 /* ビット期間(基本クロック16サイクルの期間が1ビット期間となる) */ 175 157 for(i = 0; i < 16; i++) { } 176 158 177 /* éå信許å¯*/159 /* 送受信許可 */ 178 160 sil_wrb_mem(SCI_SCR(ATTR_baseAddress), 179 161 (sil_reb_mem(SCI_SCR(ATTR_baseAddress)) | SCI_SCR_FLG_ENABLE)); … … 183 165 184 166 /* 185 * ã·ãªã¢ã«I/Oãã¼ãã®ã¯ãã¼ãº167 * シリアルI/Oポートのクローズ 186 168 */ 187 169 void … … 191 173 192 174 /* 193 * UART åæ¢175 * UART停止 194 176 */ 195 177 sil_wrb_mem(SCI_SCR(ATTR_baseAddress), 0x00U); … … 197 179 198 180 /* 199 * ã·ãªã¢ã«I/Oãã¼ãã¸ã®æåéä¿¡181 * シリアルI/Oポートへの文字送信 200 182 */ 201 183 bool_t … … 212 194 213 195 /* 214 * ã·ãªã¢ã«I/Oãã¼ãããã®æååä¿¡196 * シリアルI/Oポートからの文字受信 215 197 */ 216 198 int_t … … 221 203 int_t c = -1; 222 204 223 /* ãªã¼ãã©ã³ã¨ã©ã¼ãã§ãã¯*/ /* ZZZ */205 /* オーバランエラーチェック */ /* ZZZ */ 224 206 reg = sil_reb_mem(SCI_SSR(ATTR_baseAddress)); 225 207 while((reg & SCI_SSR_ORER_BIT) != 0) { … … 229 211 230 212 /* 231 * åä¿¡ãã©ã°ãONã®ã¨ãã®ã¿åä¿¡ãããã¡ããæåãåå¾ãã.232 * ããã¯, ãã¼ãªã³ã°åä¿¡ã«å¯¾å¿ããããã§ãã.233 * ããã, RX600ã·ãªã¼ãºã§ã¯åä¿¡ãã©ã°ããªããã¨, ã·ã¹ãã ãµã¼ãã¹234 * ã§ã¯åä¿¡å²è¾¼ã¿ã®ä¸ãããããã¼ã¿ãåä¿¡ãã«æ¥ãªããã¨ãã, 常ã«235 * åä¿¡ãããã¡ããæåãåå¾ãã.213 * 受信フラグがONのときのみ受信バッファから文字を取得する. 214 * これは, ポーリング受信に対応するためである. 215 * しかし, RX600シリーズでは受信フラグがないこと, システムサービス 216 * では受信割込みの中からしかデータを受信しに来ないことから, 常に 217 * 受信バッファから文字を取得する. 236 218 */ 237 219 c = (int)(sil_reb_mem(SCI_RDR(ATTR_baseAddress))); … … 241 223 242 224 /* 243 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®è¨±å¯225 * シリアルI/Oポートからのコールバックの許可 244 226 */ 245 227 void … … 264 246 265 247 /* 266 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®ç¦æ¢248 * シリアルI/Oポートからのコールバックの禁止 267 249 */ 268 250 void … … 287 269 288 270 /* 289 * ã·ãªã¢ã«I/Oãã¼ãã«å¯¾ããåä¿¡å²è¾¼ã¿å¦ç271 * シリアルI/Oポートに対する受信割込み処理 290 272 */ 291 273 void … … 296 278 if (scif_getready(p_cellcb)) { 297 279 /* 298 * åä¿¡éç¥ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼280 * 受信通知コールバックルーチンを呼び出す. 299 281 */ 300 282 ciSIOCBR_readyReceive(); … … 303 285 304 286 /* 305 * ã·ãªã¢ã«I/Oãã¼ãã«å¯¾ããéä¿¡å²è¾¼ã¿å¦ç287 * シリアルI/Oポートに対する送信割込み処理 306 288 */ 307 289 void … … 312 294 if (scif_putready(p_cellcb)) { 313 295 /* 314 * éä¿¡å¯è½ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼296 * 送信可能コールバックルーチンを呼び出す. 315 297 */ 316 298 ciSIOCBR_readySend();
Note:
See TracChangeset
for help on using the changeset viewer.