⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sh1sci.c

📁 toppers操作系统源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* *  TOPPERS/JSP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Just Standard Profile Kernel *  *  Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory *                              Toyohashi Univ. of Technology, JAPAN *  Copyright (C) 2001-2004 by Industrial Technology Institute, *                              Miyagi Prefectural Government, JAPAN *  *  惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation  *  によって给山されている GNU General Public License の Version 2 に淡 *  揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア *  を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· *  网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 *      脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 *      荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 *      の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 *      脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ *      とˉ *    (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 *        侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに *        鼠桂することˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お *  よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も *  崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 *  儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ *  *  @(#) $Id: sh1sci.c,v 1.12 2005/11/14 08:00:44 honda Exp $ *//* *   SH1柒垄シリアルコミュニケ〖ションインタフェ〖スSCI脱 词白ドライバ *     *    SCI0のみのサポ〖トだが、2chへの橙磨拉は荒している。 * *    sh1sci.{c,h}とhw_serial.hの尸充の答洁 *      ˇsh1sci.{c,h}¨シリアルデバイスに巴赂する婶尸のみ淡揭 *      ˇhw_serial.h¨充哈みコントロ〖ラ巴赂 *       *      ˇクロック件侨眶巴赂について *        ˇデバイス巴赂のパラメ〖タはsh1sci.c柒で脱罢する。 *        ˇ络傅のクロック件侨眶はコンパイルオプションとして涂える */#include <s_services.h>#include <sh1sci.h>/* *  コントロ〖ルレジスタのアドレス ∈すべて1バイトサイズ∷ */	/*  チャネル0  */#define SCI_SMR0 (VB *)0x5fffec0	/*  シリアルモ〖ドレジスタ */#define SCI_BRR0 (VB *)0x5fffec1	/*  ビットレ〖トレジスタ  */#define SCI_SCR0 (VB *)0x5fffec2	/*  シリアルコントロ〖ルレジスタ */#define SCI_TDR0 (VB *)0x5fffec3	/*  トランスミットデ〖タレジスタ */#define SCI_SSR0 (VB *)0x5fffec4	/*  シリアルステ〖タスレジスタ */#define SCI_RDR0 (VB *)0x5fffec5	/*  レシ〖ブデ〖タレジスタ */	/*  チャネル1  */#define SCI_SMR1 (VB *)0x5fffec8	/*  シリアルモ〖ドレジスタ */#define SCI_BRR1 (VB *)0x5fffec9	/*  ビットレ〖トレジスタ  */#define SCI_SCR1 (VB *)0x5fffeca	/*  シリアルコントロ〖ルレジスタ */#define SCI_TDR1 (VB *)0x5fffecb	/*  トランスミットデ〖タレジスタ */#define SCI_SSR1 (VB *)0x5fffecc	/*  シリアルステ〖タスレジスタ */#define SCI_RDR1 (VB *)0x5fffecd	/*  レシ〖ブデ〖タレジスタ *//* *  コントロ〖ルレジスタの肋年猛 *//*  シリアルステ〖タスレジスタSSRの称ビット  */#define SSR_TDRE	0x80u	/* トランスミットデ〖タレジスタエンプティ */#define SSR_RDRF	0x40u	/* レシ〖ブデ〖タレジスタフル 		*/#define SSR_ORER	0x20u	/* オ〖バ〖ランエラ〖 			*/#define SSR_FER		0x10u	/* フレ〖ミングエラ〖 			*/#define SSR_PER		0x08u	/* パリティエラ〖 			*/#define SSR_TEND	0x04u	/* トランスミットエンド 		*/#define SSR_MPB		0x02u	/* マルチプロセッサビット 		*/#define SSR_MPBT	0x01u	/* マルチプロセッサビットトランスファ 	*//*  シリアルコントロ〖ルレジスタSCRの称ビット  */#define SCR_TIE		0x80u	/* トランスミットインタラプトイネ〖ブル */#define SCR_RIE		0x40u	/* レシ〖ブインタラプトイネ〖ブル 	*/#define SCR_TE		0x20u	/* トランスミットイネ〖ブル 		*/#define SCR_RE		0x10u	/* レシ〖ブイネ〖ブル 			*/#define SCR_MPIE	0x08u	/* マルチプロセッサインタラプトイネ〖ブル */				/* トランスミットエンドインタラプト	*/#define SCR_TEIE	0x04u	/* イネ〖ブル 				*/#define SCR_CKE_MASK	0x03u	/* クロックソ〖ス联买脱マスク		*/#define SCR_CKE		0x00u	/* クロックイネ〖ブル			*/				/*   拇殊票袋及のとき  			*/				/*   	柒婶クロック蝗脱  		*/				/*   	叫蜗なし  			*//*  シリアルモ〖ドジスタSMRの称ビット  */				/* コミュニケ〖ションモ〖ド 	*/#define SMR_CA_CLOCK	0x80u	/* 	クロック票袋及 		*/#define SMR_CA_ASYNC	0x00u	/* 	拇殊票袋及 		*/	/*  拇殊票袋及奶慨¨Asynchronous Communication method	*/				/* キャラクタレングス 		*/#define SMR_CHR8	0x00u	/* 	8ビット 		*/#define SMR_CHR7	0x40u	/* 	7ビット 		*/				/* パリティイネ〖ブル 		*/#define SMR_PE		0x20u	/* 	パリティあり 		*/#define SMR_PE_NON	0x00u	/* 	パリティなし 		*/#define SMR_OE_ODD	0x10u	/* パリティモ〖ド∈瘩眶パリティ∷*/#define SMR_STOP2	0x08u	/* ストップビットレングス¨2 	*/#define SMR_STOP1	0x00u	/* ストップビットレングス¨1 	*/#define SMR_MP		0x04u	/* マルチプロセッサモ〖ド 	*//* *  クロック件侨眶巴赂 *  	叠旁マイクロコンピュ〖タKZ-SH1-01のクロック件侨眶は20MHz *  	CQ叫惹 RISC删擦キット SH-1のクロック件侨眶は19.6608MHz *  	撅茸睛乖SH1/CPUBのクロック件侨眶は16MHz *//* *  尸件孺とビットレ〖トの肋年 */#if CONFIG_BAUD == 9600/* * *  クロック	 20MHzの眷圭 *  ビットレ〖ト 9600bps * *   n=0(尸件しないのでそのまま) *   N=64で疙汗0.16% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=64 */#ifdef CONFIG_20MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	64u	/*  ビットレ〖ト  	*/#endif/* *  クロック	 19.6608MHz *  ビットレ〖ト 9600bps * *   n=0(尸件しないのでそのまま) *   N=63で疙汗0% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=63 */#ifdef CONFIG_19MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	63u	/*  ビットレ〖ト  	*/#endif/* *  クロック	 16MHz *  ビットレ〖ト 9600bps * *   n=0(尸件しないのでそのまま) *   N=51で疙汗0.16% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=51 */#ifdef CONFIG_16MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	51u	/*  ビットレ〖ト  	*/#endif/* *  ボ〖レ〖ト肋年稿、クロックが奥年するまでの略ち箕粗 *   ∈呵介の1ビット尸∷  *  BPS=9600bpsの眷圭 *   t = 1 / BPS = 104,167 = 105,000[nsec] */#define SH1SCI_DELAY 	105000#elif CONFIG_BAUD == 19200/* * *  クロック	 20MHzの眷圭 *  ビットレ〖ト 19200bps * *   n=0(尸件しないのでそのまま) *   N=32で疙汗 -1.36% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=32 */#ifdef CONFIG_20MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	32u	/*  ビットレ〖ト  	*/#endif/* *  クロック	 19.6608MHz *  ビットレ〖ト 19200bps * *   n=0(尸件しないのでそのまま) *   N=31で疙汗0% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=31 */#ifdef CONFIG_19MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	31u	/*  ビットレ〖ト  	*/#endif/* *  クロック	 16MHz *  ビットレ〖ト 19200bps * *   n=0(尸件しないのでそのまま) *   N=25で疙汗0.16% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=25 */#ifdef CONFIG_16MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	25u	/*  ビットレ〖ト  	*/#endif/* *  ボ〖レ〖ト肋年稿、クロックが奥年するまでの略ち箕粗 *   ∈呵介の1ビット尸∷  *  BPS=19200bpsの眷圭 *   t = 1 / BPS = 52,083 = 53,000[nsec] */#define SH1SCI_DELAY 	53000#elif CONFIG_BAUD == 38400/* * *  クロック	 20MHzの眷圭 *  ビットレ〖ト 38400bps * *   n=0(尸件しないのでそのまま) *   N=15で疙汗1.73% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=15 */#ifdef CONFIG_20MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	15u	/*  ビットレ〖ト  	*/#endif/* *  クロック	 19.6608MHz *  ビットレ〖ト 38400bps * *   n=0(尸件しないのでそのまま) *   N=15で疙汗0% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=15 */#ifdef CONFIG_19MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	15u	/*  ビットレ〖ト  	*/#endif/* *  クロック	 16MHz *  ビットレ〖ト 38400bps * *   n=0(尸件しないのでそのまま) *   N=12で疙汗0.16% *  よって、 *   シリアルモ〖ドレジスタSMRのクロックセレクトビットCKS=00 *   ビットレ〖トレジスタBRR=16 */#ifdef CONFIG_16MHZ#define SMR_CKS 	0x0u	/*  尸件孺  		*/#define SCI_BRR 	16u	/*  ビットレ〖ト  	*/#endif/* *  ボ〖レ〖ト肋年稿、クロックが奥年するまでの略ち箕粗 *   ∈呵介の1ビット尸∷  *  BPS=38400bpsの眷圭 *   t = 1 / BPS = 26,042 = 27,000[nsec] */#define SH1SCI_DELAY 	27000#else	/*  CONFIG_BAUD  */#error unsupported baud rate.#endif 	/*  CONFIG_BAUD  *//* *  シリアルI/Oポ〖ト瓷妄ブロックの年盗 *   2chサポ〖トに橙磨する眷圭は介袋猛脱のデ〖タも崔める */struct sio_port_control_block {	VP_INT		exinf;		/* 橙磨攫鼠 */	BOOL		openflag;	/* オ〖プン貉みフラグ */};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -