| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /********************************************************************************
- **** 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
- }
|