📄 spi.c
字号:
/**********************************************************
* 文件名称:
*
* 文件说明:
* 模块操作MSP430的USART的SPI通讯模块,
* 本实验需要使用外围芯片HC164、HC165
* 实验从HC165读取数据,向HC164写数据
* HC164、HC165的有关知识请参考datasheet
*
***********************************************************/
#include <msp430x44x.h>
/**********************************************************
;
; MSP430F449
; -----------------
; /|\| XIN|-
; | | | ^ HC164
; HC165 --|RST XOUT|- | -------------
; ---------- | | |-|/CLR,B | 8
; 8 | /LD|<---|P3.0 SIMO0/P3.1|------>|A Qx|--\->
; -\->|A-H CLK|<---|P3.3/UCLK0 - P3.3|------>|CLK |
; |-|INH QH|--->|P3.2/SOMI0 | | |
; |-|SER | | | | |
; - | | | | | |
;
******************************************************************/
/************** 程序初始化 *****************************************/
void init_SPI()
{
P3SEL |= 0x0E; //P1.1~3 置位外围模块
P3DIR |= 0x01; //P3.0 输出模式
ME1 |= USPIE0; // 使能 USART0 SPI 模式
UTCTL0 = CKPH+SSEL1+SSEL0+STC ; // 设置 SMCLK 和 3-pin 模式;
UCTL0 = CHAR + SYNC + MM; //设置 8-bit 字符模式
UBR00 = 0x02; //设置波特率
UBR10 = 0x00;
UMCTL0 = 0x00;
}
/**********************************************************
*
* 转发数据
*
***********************************************************/
void forward_Data()
{
while((IFG1 & UTXIFG0)!= UTXIFG0); //检测是否TX发送缓存Ready
P3OUT &= 0xFE; //锁存HC165的数据
P3OUT |= 0x01;
TXBUF0 = RXBUF0; //把HC165的数据发到HC164
}
void main()
{
unsigned int tmp; //延时变量
WDTCTL = WDTHOLD + WDTPW; //关看门狗
init_SPI(); //初始化SPI
while(1)
{
forward_Data(); // 交换数据
for(tmp=0;tmp<0xffff;tmp++); // 延迟,此间可以设置断点
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -