| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /********************************************************************************
- **** Copyright (C), 2020, Fortior Technology Co., Ltd. ****
- ********************************************************************************
- File Name : SPI.c
- Author : Bruce HW&RD
- Date : 2020-10-15
- Description : .C file function description
- Version : 1.0
- Function List :
- Record :
- 1.Date : 2020-10-15
- Author : Bruce HW&RD
- Modification: Created file
- ********************************************************************************/
- #include "SPI.h"
- #include "FU68xx_5_MCU.h"
- /*****************************************************************************
- Function : SPI_Init
- Description : SPI初始化
- Input : void
- Output : None
- Return :
- Others :
- Record
- 1.Date : 20190402
- Author : Bruce HW&RD
- Modification: Created function
- *****************************************************************************/
- void SPI_Init(void)
- {
- ClrBit(SPI_CR1, SPIEN); // 0,disable SPI;1 enable
- /* -------------------------------------------------------------------------------------------------
- SPI管脚配置
- 1、禁止UART复用,P06配置为MISO,P05配置为MOSI
- 2、禁止比较器输出复用,P07配置为SCLK
- -------------------------------------------------------------------------------------------------*/
- ClrBit(PH_SEL, UART1EN); // 0,P06 as GPIO or SPI_MISO,P05 as GPIO or SPI_MOSI;1,P06 and p07 as USART
- ClrBit(PH_SEL1, SPICT); // 0:P05/P06 1:P00/P01
- /* -------------------------------------------------------------------------------------------------
- SPI时钟相位/极性配置
- CPHA = 0, CPOL = 0:上升沿接收,下降沿发送,空闲电平为低
- CPHA = 0, CPOL = 1:上升沿发送,下降沿接收,空闲电平为高
- CPHA = 1, CPOL = 0:上升沿发送,下降沿接收,空闲电平为低
- CPHA = 1, CPOL = 1:上升沿接收,下降沿发送,空闲电平为高
- -------------------------------------------------------------------------------------------------*/
- SetReg(SPI_CR0, CPHA | CPOL, CPOL);
- /* -------------------------------------------------------------------------------------------------
- SPI从方式选择配置
- 00:3线从方式或3线主方式,NSS信号不连到端口管脚
- 01:4线从方式或4线多主方式,NSS配置为输入
- 1x:4线单主方式,NSS配置为输出,NSS信号输出x电平
- -------------------------------------------------------------------------------------------------*/
- // SetReg(SPI_CR1 , NSSMOD0 | NSSMOD1 , NSSMOD0 | NSSMOD1); //三线DBG模式
- SetReg(SPI_CR1, NSSMOD0 | NSSMOD1, NSSMOD0 | NSSMOD1); // 11:三线制 01:单线制(P05)
- SetBit(SPI_CR0, SPIMS); // 0:Slave, 1:Master
- /* -------------------------------------------------------------------------------------------------
- SPI中断配置
- SPIF:SPI字节传输完成中断标志,硬件置位,软件清零
- WCOL:SPI写冲突中断(发送缓冲器非空时写操作),硬件置位,软件清零
- MODF:SPI方式错误中断(多主方式NSS被拉低,MSTEN和SPIEN被清零)硬件置位,软件清零
- RXOVRN:SPI接收溢出中断(SPI接收缓冲器接收溢出),硬件置位,软件清零
- -------------------------------------------------------------------------------------------------*/
- SetReg(SPI_CR1, SPIIF | WCOL | MODF | RXOVRN, 0x00); // SPI所有中断清除
- SPIIE = 0; // SPI中断使能
- SPI_CLK = 0; // Fspi = Fcpu / (2*(SPI_CLK + 1)) = 6MHz
- SetBit(SPI_CR1, SPIEN); // Enable SPI
- }
|