📄 qsm.h
字号:
/* *------------------------------------------------------------------- * * QSM -- Queued Serial Module * * The QSM contains two serial interfaces: (a) the queued serial * peripheral interface (QSPI) and the serial communication interface * (SCI). The QSPI provides peripheral expansion and/or interprocessor * communication through a full-duplex, synchronous, three-wire bus. A * self contained RAM queue permits serial data transfers without CPU * intervention and automatic continuous sampling. The SCI provides a * standard non-return to zero mark/space format with wakeup functions * to allow the CPU to run uninterrupted until woken * * For more information, refer to Motorola's "Modular Microcontroller * Family Queued Serial Module Reference Manual" (Motorola document * QSMRM/AD). * * This file has been created by John S. Gwynne for support of * Motorola's 68332 MCU in the efi332 project. * * Redistribution and use in source and binary forms are permitted * provided that the following conditions are met: * 1. Redistribution of source code and documentation must retain * the above authorship, this list of conditions and the * following disclaimer. * 2. The name of the author may not be used to endorse or promote * products derived from this software without specific prior * written permission. * * This software is provided "AS IS" without warranty of any kind, * either expressed or implied, including, but not limited to, the * implied warranties of merchantability, title and fitness for a * particular purpose. * *------------------------------------------------------------------ * * $Id: qsm.h,v 1.6 2000/06/12 14:59:38 joel Exp $ */#ifndef _QSM_H_#define _QSM_H_/* SAM-- shift and mask */#undef SAM#define SAM(a,b,c) ((a << b) & c)/* QSM_CRB (QSM Control Register Block) base address of the QSM control registers */#if SIM_MM == 0#define QSM_CRB 0x7ffc00#else#undef SIM_MM#define SIM_MM 1#define QSM_CRB 0xfffc00#endif #define QSMCR (volatile unsigned short int * const)(0x00 + QSM_CRB) /* QSM Configuration Register */#define STOP 0x8000 /* Stop Enable */#define FRZ 0x6000 /* Freeze Control */#define SUPV 0x0080 /* Supervisor/Unrestricted */#define IARB 0x000f /* Inerrupt Arbitration */#define QTEST (volatile unsigned short int * const)(0x02 + QSM_CRB) /* QSM Test Register *//* Used only for factor testing */#define QILR (volatile unsigned char * const)(0x04 + QSM_CRB) /* QSM Interrupt Level Register */#define ILQSPI 0x38 /* Interrupt Level for QSPI */#define ILSCI 0x07 /* Interrupt Level for SCI */#define QIVR (volatile unsigned char * const)(0x05 + QSM_CRB) /* QSM Interrupt Vector Register */#define INTV 0xff /* Interrupt Vector Number */#define SCCR0 (volatile unsigned short int * const)(0x08 + QSM_CRB) /* SCI Control Register 0 */#define SCBR 0x1fff /* SCI Baud Rate */#define SCCR1 (volatile unsigned short int * const)(0x0a + QSM_CRB) /* SCI Control Register 1 */#define LOOPS 0x4000 /* Loop Mode */#define WOMS 0x2000 /* Wired-OR Mode for SCI Pins */#define ILT 0x1000 /* Idle-Line Detect Type */#define PT 0x0800 /* Parity Type */#define PE 0x0400 /* Parity Enable */#define M 0x0200 /* Mode Select */#define WAKE 0x0100 /* Wakeup by Address Mark */#define TIE 0x0080 /* Transmit Complete Interrupt Enable */#define TCIE 0x0040 /* Transmit Complete Interrupt Enable */#define RIE 0x0020 /* Receiver Interrupt Enable */#define ILIE 0x0010 /* Idle-Line Interrupt Enable */#define TE 0x0008 /* Transmitter Enable */#define RE 0x0004 /* Receiver Enable */#define RWU 0x0002 /* Receiver Wakeup */#define SBK 0x0001 /* Send Break */#define SCSR (volatile unsigned short int * const)(0x0c + QSM_CRB) /* SCI Status Register */#define TDRE 0x0100 /* Transmit Data Register Empty */#define TC 0x0080 /* Transmit Complete */#define RDRF 0x0040 /* Receive Data Register Full */#define RAF 0x0020 /* Receiver Active */#define IDLE 0x0010 /* Idle-Line Detected */#define OR 0x0008 /* Overrun Error */#define NF 0x0004 /* Noise Error Flag */#define FE 0x0002 /* Framing Error */#define PF 0x0001 /* Parity Error */#define SCDR (volatile unsigned short int * const)(0x0e + QSM_CRB) /* SCI Data Register */#define PORTQS (volatile unsigned char * const)(0x15 + QSM_CRB) /* Port QS Data Register */#define PQSPAR (volatile unsigned char * const)(0x16 + QSM_CRB) /* PORT QS Pin Assignment Rgister *//* Any bit cleared (zero) defines the corresponding pin to be an I/O pin. Any bit set defines the corresponding pin to be a QSPI signal. *//* note: PQS2 is a digital I/O pin unless the SPI is enabled in which case it becomes the SPI serial clock SCK. *//* note: PQS7 is a digital I/O pin unless the SCI transmitter is enabled in which case it becomes the SCI serial output TxD. */#define QSMFun 0x0#define QSMDis 0x1/* * PQSPAR Field | QSM Function | Discrete I/O pin *------------------+--------------+------------------ */#define PQSPA0 0 /* MISO | PQS0 */#define PQSPA1 1 /* MOSI | PQS1 */#define PQSPA2 2 /* SCK | PQS2 (see note)*/#define PQSPA3 3 /* PCSO/!SS | PQS3 */#define PQSPA4 4 /* PCS1 | PQS4 */#define PQSPA5 5 /* PCS2 | PQS5 */#define PQSPA6 6 /* PCS3 | PQS6 */#define PQSPA7 7 /* TxD | PQS7 (see note)*/#define DDRQS (volatile unsigned char * const)(0x17 + QSM_CRB) /* PORT QS Data Direction Register *//* Clearing a bit makes the corresponding pin an input; setting a bit makes the pin an output. */#define SPCR0 (volatile unsigned short int * const)(0x18 + QSM_CRB) /* QSPI Control Register 0 */#define MSTR 0x8000 /* Master/Slave Mode Select */#define WOMQ 0x4000 /* Wired-OR Mode for QSPI Pins */#define BITS 0x3c00 /* Bits Per Transfer */#define CPOL 0x0200 /* Clock Polarity */#define CPHA 0x0100 /* Clock Phase */#define SPBR 0x00ff /* Serial Clock Baud Rate */#define SPCR1 (volatile unsigned short int * const)(0x1a + QSM_CRB) /* QSPI Control Register 1 */#define SPE 0x8000 /* QSPI Enable */#define DSCKL 0x7f00 /* Delay before SCK */#define DTL 0x00ff /* Length of Delay after Transfer */#define SPCR2 (volatile unsigned short int * const)(0x1c + QSM_CRB) /* QSPI Control Register 2 */#define SPIFIE 0x8000 /* SPI Finished Interrupt Enable */#define WREN 0x4000 /* Wrap Enable */#define WRTO 0x2000 /* Wrap To */#define ENDQP 0x0f00 /* Ending Queue Pointer */#define NEWQP 0x000f /* New Queue Pointer Value */#define SPCR3 (volatile unsigned char * const)(0x1e + QSM_CRB) /* QSPI Control Register 3 */#define LOOPQ 0x0400 /* QSPI Loop Mode */#define HMIE 0x0200 /* HALTA and MODF Interrupt Enable */#define HALT 0x0100 /* Halt */#define SPSR (volatile unsigned char * const)(0x1f + QSM_CRB) /* QSPI Status Register */#define SPIF 0x0080 /* QSPI Finished Flag */#define MODF 0x0040 /* Mode Fault Flag */#define HALTA 0x0020 /* Halt Acknowlwdge Flag */#define CPTQP x0000f /* Completed Queue Pointer */#define QSPIRR (volatile unsigned char * const)(0x100 + QSM_CRB) /* QSPI Receive Data RAM */#define QSPITR (volatile unsigned char * const)(0x120 + QSM_CRB) /* QSPI Transmit Data RAM */#define QSPIcR (volatile unsigned char * const)(0x140 + QSM_CRB) /* QSPI Command RAM */#endif /* _QSM_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -