Changeset 389 for azure_iot_hub/trunk/asp3_dcre/arch/rx630_gcc/tSCIF.c
- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/arch/rx630_gcc/tSCIF.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 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 … … 66 50 67 51 /* 68 * ããªããã£ããªéä¿¡ï¼åä¿¡é¢æ°69 */ 70 71 /* 72 * åä¿¡ãããã¡ã«æåããããï¼52 * プリミティブな送信/受信関数 53 */ 54 55 /* 56 * 受信バッファに文字があるか? 73 57 */ 74 58 Inline bool_t … … 76 60 { 77 61 /* 78 * åä¿¡ãã©ã°ãONã®ã¨ãã®ã¿åä¿¡ãããã¡ããæåãåå¾ãã.79 * ããã¯, ãã¼ãªã³ã°åä¿¡ã«å¯¾å¿ããããã§ãã.80 * ããã, RX600ã·ãªã¼ãºã§ã¯åä¿¡ãã©ã°ããªããã¨, ã·ã¹ãã ãµã¼ãã¹81 * ã§ã¯åä¿¡å²è¾¼ã¿ã®ä¸ãããããã¼ã¿ãåä¿¡ãã«æ¥ãªããã¨ãã, 常ã«82 * åä¿¡ãããã¡ããæåãåå¾ãã.62 * 受信フラグがONのときのみ受信バッファから文字を取得する. 63 * これは, ポーリング受信に対応するためである. 64 * しかし, RX600シリーズでは受信フラグがないこと, システムサービス 65 * では受信割込みの中からしかデータを受信しに来ないことから, 常に 66 * 受信バッファから文字を取得する. 83 67 */ 84 68 return true; … … 86 70 87 71 /* 88 * éä¿¡ãããã¡ã«ç©ºãããããï¼72 * 送信バッファに空きがあるか? 89 73 */ 90 74 Inline bool_t … … 98 82 99 83 /* 100 * éä¿¡ããæåã®æ¸è¾¼ã¿84 * 送信する文字の書込み 101 85 */ 102 86 Inline void … … 107 91 108 92 /* 109 * ã·ãªã¢ã«I/Oãã¼ãã®ãªã¼ãã³93 * シリアルI/Oポートのオープン 110 94 */ 111 95 void … … 118 102 if (VAR_initialized) { 119 103 /* 120 * æ¢ã«åæåãã¦ããå ´åã¯ãäºéã«åæåããªãï¼104 * 既に初期化している場合は、二重に初期化しない. 121 105 */ 122 106 return; … … 139 123 140 124 /* 141 * SCIãã©ã¤ãã®åæåã«ã¼ãã³ 142 */ 143 144 /* 145 * å²ãè¾¼ã¿è¦æ±å 146 ã¬ã¸ã¹ã¿ã®è¨å®(ISELRi) 125 * SCIドライバの初期化ルーチン 126 */ 127 128 /* 129 * 割り込み要求先レジスタの設定(ISELRi) 147 130 * 148 * ãªã»ããå¤ã¨åãå¤ãè¨å®ãããã¨ã«ãªããã,149 * å¦çã¯çç¥ãã.150 */ 151 152 /* 153 * ã¢ã¸ã¥ã¼ã«ã¹ãããæ©è½ã®è¨å®154 */ 155 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* æ¸è¾¼ã¿è¨±å¯*/131 * リセット値と同じ値を設定することになるため, 132 * 処理は省略する. 133 */ 134 135 /* 136 * モジュールストップ機能の設定 137 */ 138 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* 書込み許可 */ 156 139 sil_wrw_mem(SYSTEM_MSTPCRB_ADDR, 157 140 sil_rew_mem(SYSTEM_MSTPCRB_ADDR) & ~SCI_MSTPCRB_BIT(ATTR_baseAddress)); 158 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* æ¸è¾¼ã¿ç¦æ¢ */ 159 160 /* éåä¿¡ç¦æ¢, SCKn端åã¯å 161 ¥åºåãã¼ãã¨ãã¦ä½¿ç¨ */ 141 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* 書込み禁止 */ 142 143 /* 送受信禁止, SCKn端子は入出力ポートとして使用 */ 162 144 sil_wrb_mem(SCI_SCR(ATTR_baseAddress), 0x00U); 163 145 164 /* ã¯ããã¯é¸æããã(SMR.CKS[1:0]ããããè¨å®) */146 /* クロック選択ビット(SMR.CKS[1:0]ビットを設定) */ 165 147 sil_wrb_mem(SCI_SMR(ATTR_baseAddress), 166 148 (sil_reb_mem(SCI_SMR(ATTR_baseAddress)) & ~0x03) | clk); 167 149 168 /* SMR ã«éä¿¡ï¼ åä¿¡ãã©ã¼ããããè¨å®) */150 /* SMRに送信/ 受信フォーマットを設定) */ 169 151 sil_wrb_mem(SCI_SMR(ATTR_baseAddress), 170 152 sil_reb_mem(SCI_SMR(ATTR_baseAddress)) & (~SCI_SMR_FLG_ENABLE)); 171 153 172 /* ãããã¬ã¼ããè¨å®*/154 /* ビットレートを設定 */ 173 155 sil_wrb_mem(SCI_BRR(ATTR_baseAddress), brr); 174 156 175 /* ãããæé(åºæ¬ã¯ããã¯16ãµã¤ã¯ã«ã®æéã1ãããæéã¨ãªã) */157 /* ビット期間(基本クロック16サイクルの期間が1ビット期間となる) */ 176 158 for(i = 0; i < 16; i++) { } 177 159 178 /* éå信許å¯*/160 /* 送受信許可 */ 179 161 sil_wrb_mem(SCI_SCR(ATTR_baseAddress), 180 162 (sil_reb_mem(SCI_SCR(ATTR_baseAddress)) | SCI_SCR_FLG_ENABLE)); … … 184 166 185 167 /* 186 * ã·ãªã¢ã«I/Oãã¼ãã®ã¯ãã¼ãº168 * シリアルI/Oポートのクローズ 187 169 */ 188 170 void … … 192 174 193 175 /* 194 * UART åæ¢176 * UART停止 195 177 */ 196 178 sil_wrb_mem(SCI_SCR(ATTR_baseAddress), 0x00U); … … 198 180 199 181 /* 200 * ã·ãªã¢ã«I/Oãã¼ãã¸ã®æåéä¿¡182 * シリアルI/Oポートへの文字送信 201 183 */ 202 184 bool_t … … 213 195 214 196 /* 215 * ã·ãªã¢ã«I/Oãã¼ãããã®æååä¿¡197 * シリアルI/Oポートからの文字受信 216 198 */ 217 199 int_t … … 222 204 int_t c = -1; 223 205 224 /* ãªã¼ãã©ã³ã¨ã©ã¼ãã§ãã¯*/ /* ZZZ */206 /* オーバランエラーチェック */ /* ZZZ */ 225 207 reg = sil_reb_mem(SCI_SSR(ATTR_baseAddress)); 226 208 while((reg & SCI_SSR_ORER_BIT) != 0) { … … 230 212 231 213 /* 232 * åä¿¡ãã©ã°ãONã®ã¨ãã®ã¿åä¿¡ãããã¡ããæåãåå¾ãã.233 * ããã¯, ãã¼ãªã³ã°åä¿¡ã«å¯¾å¿ããããã§ãã.234 * ããã, RX600ã·ãªã¼ãºã§ã¯åä¿¡ãã©ã°ããªããã¨, ã·ã¹ãã ãµã¼ãã¹235 * ã§ã¯åä¿¡å²è¾¼ã¿ã®ä¸ãããããã¼ã¿ãåä¿¡ãã«æ¥ãªããã¨ãã, 常ã«236 * åä¿¡ãããã¡ããæåãåå¾ãã.214 * 受信フラグがONのときのみ受信バッファから文字を取得する. 215 * これは, ポーリング受信に対応するためである. 216 * しかし, RX600シリーズでは受信フラグがないこと, システムサービス 217 * では受信割込みの中からしかデータを受信しに来ないことから, 常に 218 * 受信バッファから文字を取得する. 237 219 */ 238 220 c = (int)(sil_reb_mem(SCI_RDR(ATTR_baseAddress))); … … 242 224 243 225 /* 244 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®è¨±å¯226 * シリアルI/Oポートからのコールバックの許可 245 227 */ 246 228 void … … 265 247 266 248 /* 267 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®ç¦æ¢249 * シリアルI/Oポートからのコールバックの禁止 268 250 */ 269 251 void … … 288 270 289 271 /* 290 * ã·ãªã¢ã«I/Oãã¼ãã«å¯¾ããåä¿¡å²è¾¼ã¿å¦ç272 * シリアルI/Oポートに対する受信割込み処理 291 273 */ 292 274 void … … 297 279 if (scif_getready(p_cellcb)) { 298 280 /* 299 * åä¿¡éç¥ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼281 * 受信通知コールバックルーチンを呼び出す. 300 282 */ 301 283 ciSIOCBR_readyReceive(); … … 304 286 305 287 /* 306 * ã·ãªã¢ã«I/Oãã¼ãã«å¯¾ããéä¿¡å²è¾¼ã¿å¦ç288 * シリアルI/Oポートに対する送信割込み処理 307 289 */ 308 290 void … … 313 295 if (scif_putready(p_cellcb)) { 314 296 /* 315 * éä¿¡å¯è½ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼297 * 送信可能コールバックルーチンを呼び出す. 316 298 */ 317 299 ciSIOCBR_readySend();
Note:
See TracChangeset
for help on using the changeset viewer.