📄 comm_spi.h
字号:
//====================================================================
//--- COPYRIGHT
//====================================================================
// Copyright 2006 Microchip Technology Inc.
//
// Microchip Technology Inc. ("Microchip") licenses this software to
// you solely for use with Microchip products. The software is owned
// by Microchip and is protected under applicable copyright laws. All
// rights reserved.
//
// SOFTWARE IS PROVIDED IN AN "AS IS." MICROCHIP EXPRESSLY DISCLAIMS ANY
// WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL MICROCHIP
// BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL
// DAMAGES, LOST PROFITS OR LOST DATA, HARM TO YOUR EQUIPMENT, COST OF
// PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS
// BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF),
// ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER SIMILAR COSTS.
//
//====================================================================
//--- TITLE
//====================================================================
// Filename: comm_spi.h
// Microcontroller: PIC18F2550
// Compiled using: C18 V3.00
//
// Author: Mark Enochson
// Company: Microchip Technology Inc.
//
//====================================================================
//--- DESCRIPTION
//====================================================================
//
//====================================================================
//--- HISTORY
//====================================================================
//
// 0001 - 08-01-06 - ME
// - initial release
//
//====================================================================
#ifndef __COMM_SPI_H
#define __COMM_SPI_H
//==========================================================
//--- RESOURCES
//==========================================================
#define COMM_SPI_SDI_TRIS TRISBbits.TRISB0 // serial data in - dir
#define COMM_SPI_SDO_TRIS TRISCbits.TRISC7 // serial data out - dir
#define COMM_SPI_SCK_TRIS TRISBbits.TRISB1 // serial clock - dir
#define COMM_SPI_CS_TRIS TRISCbits.TRISC6 // chip select - dir
#define COMM_SPI_SDI_PIN LATBbits.LATB0 // serial data in - pin
#define COMM_SPI_SDO_PIN LATCbits.LATC7 // serial data out - pin
#define COMM_SPI_SCK_PIN LATBbits.LATB1 // serial clock - pin
#define COMM_SPI_CS_PIN LATCbits.LATC6 // chip select - pin
//---
#define COMM_SPI_SDI_2_TRIS TRISAbits.TRISA1 //
#define COMM_SPI_SDO_2_TRIS TRISAbits.TRISA3 //
#define COMM_SPI_SCK_2_TRIS TRISAbits.TRISA2 //
#define COMM_SPI_CS_2_TRIS TRISAbits.TRISA5 //
#define COMM_SPI_SDI_2_PIN PORTAbits.RA1 //
#define COMM_SPI_SDO_2_PIN PORTAbits.RA3 //
#define COMM_SPI_SCK_2_PIN PORTAbits.RA2 //
#define COMM_SPI_CS_2_PIN PORTAbits.RA5 //
//==========================================================
//--- PROTOTYPES
//==========================================================
TD_BYTE comm_spi_init(void); // initialize per CONTROL_BLOCK
void comm_spi_reset(void); // reset to IDLE state
void comm_spi_svc(void); // script processing service
void comm_spi_postproc(void); // post-processing service
//==========================================================
//--- DEFINITIONS / DECLARATIONS
//==========================================================
//--- INCOMING DATA TAG(S)
#define COMM_TAG_SPI_BITRATE 0x83
#define COMM_TAG_SPI_DATAIO_IN 0x84
#define COMM_TAG_SPI_DATAIO_OUT 0x85
#define COMM_TAG_SPI_DATAIO_INOUT 0x86
#define COMM_TAG_SPI_SDO_IN 0x87
#define COMM_TAG_SPI_SDO_OUT 0x88
#define COMM_TAG_SPI_INIT 0x89
//#define COMM_TAG_SPI_RESET 0x8A
#define COMM_TAG_SPI_CS_ON 0x8B
#define COMM_TAG_SPI_CS_OFF 0x8C
//--- PROCESSING "STATES" (in addition to TAGs above)
#define COMM_STATE_SPI_DATAIO 0xFF
//--- OUTGOING DATA TAG(S)
#define COMM_TAG_SPI_EVENT_BYTE_TX 0x80
#define COMM_TAG_SPI_EVENT_BYTE_RX 0x81
#define COMM_TAG_SPI_EVENT_STATUS_ERR 0x82
//--- SSPCON1 MODE CODES
#define SSPCON1_SPI_MODE_IDLE 0x00
#define SSPCON1_SPI_MODE_MASTER 0x03
#define SSPCON1_SPI_MODE_SLAVE_SS 0x04
#define SSPCON1_SPI_MODE_SLAVE_NOSS 0x05
//------------------------------------------------
//--- COMM SPI CONTROL BLOCK
//------------------------------------------------
#define COMM_CB_SPI_EVENT_BYTE_RX_FLAG exec_control_B[16].bit0
#define COMM_CB_SPI_EVENT_BYTE_TX_FLAG exec_control_B[16].bit1
#define COMM_CB_SPI_EVENT_STATUS_ERR_FLAG exec_control_B[16].bit2
#define COMM_CB_SPI_CONFIG_REG exec_control_B[17]._byte
#define COMM_CB_SPI_CONFIG_SMP_FLAG exec_control_B[17].bit0
#define COMM_CB_SPI_CONFIG_CKE_FLAG exec_control_B[17].bit1
#define COMM_CB_SPI_CONFIG_CKP_FLAG exec_control_B[17].bit2
#define COMM_CB_SPI_CONFIG_DAOD_FLAG exec_control_B[17].bit3
//#define COMM_CB_SPI_CONFIG_SS_FLAG exec_control_B[17].bit4
//#define COMM_CB_SPI_CONFIG_SLAVE_FLAG exec_control_B[17].bit6
#define COMM_CB_SPI_CONFIG_CSPOL_FLAG exec_control_B[17].bit7
#define COMM_CB_SPI_BITRATE_PRESCALE_REG exec_control_B[22]._byte
#define COMM_CB_SPI_BITRATE_SCALE_REG exec_control_B[23]._byte
//------------------------------------------------
//--- COMM SPI STATUS BLOCK
//------------------------------------------------
#define COMM_SB_SPI_WCOL_FLAG exec_status_B[12].bit0
#define COMM_SB_SPI_SSPOV_FLAG exec_status_B[12].bit1
#define COMM_SB_SPI_ERR_FLAG exec_status_B[12].bit7
#define COMM_SB_SPI_ERR_REG exec_status_B[12]._byte
#define COMM_SB_SPI_ERR_REG_MASK (TD_BYTE)0x7F
#define COMM_SB_SPI_CONFIG_REG exec_status_B[13]._byte
#define COMM_SB_SPI_CONFIG_SMP_FLAG exec_status_B[13].bit0
#define COMM_SB_SPI_CONFIG_CKE_FLAG exec_status_B[13].bit1
#define COMM_SB_SPI_CONFIG_CKP_FLAG exec_status_B[13].bit2
#define COMM_SB_SPI_CONFIG_AOD_FLAG exec_status_B[13].bit3
#define COMM_SB_SPI_SDI_STATE_FLAG exec_status_B[14].bit0
#define COMM_SB_SPI_SDO_STATE_FLAG exec_status_B[14].bit1
#define COMM_SB_SPI_SCK_STATE_FLAG exec_status_B[14].bit2
#define COMM_SB_SPI_CS_STATE_FLAG exec_status_B[14].bit3
#define COMM_SB_SPI_REG12 exec_status_B[12]._byte
#define COMM_SB_SPI_REG13 exec_status_B[13]._byte
#define COMM_SB_SPI_REG14 exec_status_B[14]._byte
#define COMM_SB_SPI_REG15 exec_status_B[15]._byte
#define COMM_SB_SPI_REG16 exec_status_B[16]._byte
#define COMM_SB_SPI_REG17 exec_status_B[17]._byte
#define COMM_SB_SPI_REG18 exec_status_B[18]._byte
#define COMM_SB_SPI_REG19 exec_status_B[19]._byte
#define COMM_SB_SPI_BITRATE_PRESCALE_REG exec_status_B[18]._byte
#define COMM_SB_SPI_BITRATE_SCALE_REG exec_status_B[19]._byte
#endif // __COMM_SPI_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -