|
本帖最后由 sunduoze 于 2015-8-28 17:01 编辑
电设之F5529(1)UCS
电设之F5529(2)OLED(外设)
电设之F5529(3)SPI
电设之F5529(4)定时器
电设之F5529(5)KEY(外设)
电设之F5529(6)ADS1118(外设)
电设之F5529——我的核心系统板
今年电赛做的DC-DC双向电源的题目,其中ADC、DAC均使用了SPI通信(ADS1118 & DAC7512),为简单考虑,
故同时使用UCB0、UCA0 SPI,正好晒一下自己用的硬件SPI的库。
工程上,先包含这些代码
- /************************************工程中请包含此部分代码******************************/
- /*
- * Stdint.h 该头文件 重定义了 unsigned char 、unsigned int 等等。。。
- */
- #include <stdint.h>
- /*
- * Macos : 系统延时,直接依据时钟定义
- */
- //#define CPU_F (1200000) //Normal
- #define CPU_F ((double)25000000) //25Mhz
- #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0) )//x MHz----us
- #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
- #define delay_s(x) __delay_cycles((long)(CPU_F*(double)x/1.0))
- /************************End of*****工程中请包含此部分代码******************************/
复制代码
函数:该函数包含了UCB0 & UCA0 硬件SPI
说明;还是把这两个合并了吧,本计划条件编译,
后来想想,两个SPI同时工作时,不好控制
只有头文件,没有源文件。
- /*
- * SPI.h
- * Created on: 2015年8月10日
- * Author: Clover
- */
- #ifndef UCA0_SPI_H_
- #define UCA0_SPI_H_
- // | P6.6|-> SYNC_ ADS1118
- // | P3.3|-> Data Out (UCA0SIMO)
- // | P3.4|<- Data In (UCA0SOMI)
- // | P2.7|-> Serial Clock Out (UCA0CLK)
- void USCIA0_SPI_Init()//硬件spi配置函数
- {
- P3SEL |= BIT3+BIT4; // P3.3,4 option select
- P2SEL |= BIT7; // P2.7 option select
- UCA0CTL1 |= UCSWRST; // **Put state machine in reset**
- UCA0CTL0 |= UCMST + UCSYNC + UCMSB; // Master SPI 3-pin, 8-bit
- // Clock polarity high, MSB
- UCA0CTL1 |= UCSSEL_2; // SMCLK
- UCA0BR0 |= 0x02; //!!!25M时ADS1118配置为40分频
- UCA0BR1 = 0; //
- UCA0MCTL = 0; // No modulation
- UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
- }
- // | P6.5|-> SYNC_ DAC7512
- // | P3.0|-> Data Out (UCB0SIMO)
- // | P3.1|<- Data In (UCB0SOMI)
- // | P3.2|-> Serial Clock Out (UCB0CLK)
- void USCIB0_SPI_Init()//硬件spi配置函数
- {
- P3SEL |= BIT0+BIT1+BIT2;
- UCB0CTL1 |= UCSWRST;
- UCB0CTL0 |= UCMST + UCSYNC + UCMSB; // master SPI 3-pin, 8-bit
- // Clock polarity high, ADS_1118_Value
- // Clock polarity high, ADS_1118_Value
- UCB0CTL1 |= UCSSEL_2; //// f(BITCLOCK)=f(BRCLK)/UCBRx;
- // UCSSELx 00 NA 01 ACLK 10 SMCLK 11 SMCLK//ACLK=32.768K
- UCB0BR0 = 0x02;
- UCB0BR1 = 0;
- // UCB0MCTL = 0; // No modulation
- UCB0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
- }
- #endif /* SPI_H_ */
复制代码
打包一下,上传啦~
电设之F5529(3)SPI.rar
(1.18 KB, 下载次数: 46)
|
|