|
发一个自己写的msp430硬件spi驱动rf4432,有不对的请指教啊,刚接触430单片机
//spi.c文件
#include <msp430x14x.h>
#include "spi.h"
void SPISetup(void)
{
U0CTL = CHAR + SYNC + MM + SWRST; // 8-bit, SPI, Master
U0TCTL = CKPL + SSEL1 + STC; // Polarity, SMCLK, 3-wire
//U0BR0 = 0x04; // /4
//U0BR0 = 0x02; // /2
U0BR0 = 0x01; // /1 ,1分频
U0BR1 = 0; //
P3SEL |= BIT1 | BIT2 | BIT3;
// SPI option select
P3DIR |= BIT1 | BIT3| BIT5;
// SPI TXD out direction
U0MCTL = 0x000;
ME1 = USPIE0; // Module enable
U0CTL &= ~SWRST; // SPI enable // **Initialize USCI state machine**
IE1 |= URXIE0 + UTXIE0; // RX and TX interrupt enable
_EINT(); // Enable interrupts
}
void SpiWriteRegister(char addr, char value)
{
SPI_SEL_0 ; // /CS enable
IFG1 &= ~URXIFG0; // Clear flag
U0TXBUF = addr; // Send address
while (!(IFG1&URXIFG0)); // Wait for TX to finish
IFG1 &= ~URXIFG0; // Clear flag
U0TXBUF = value; // Send data
while (!(IFG1&URXIFG0)); // Wait for TX to finish
SPI_SEL_1;
}
char SpiReadRegister(char addr)
{
char x;
SPI_SEL_0 ; // /CS enable
while (!(IFG1&UTXIFG0)); // Wait for TX to finish
U0TXBUF = addr;
while (!(IFG1&UTXIFG0)); // Wait for TX to finish
U0TXBUF = 0xff; // Dummy write so we can read data
// Address is now being TX'ed, with dummy byte waiting in TXBUF...
while (!(IFG1&UTXIFG0)); // Wait for TX to finish
// Dummy byte RX'ed during addr TX now in RXBUF
IFG1 &= ~UTXIFG0; // Clear flag set during addr write
SPI_SEL_1; // /CS disable
x = U0RXBUF; // Read data
return x;
}
//spi.h
#ifndef SPI_H
#define SPI_H
#include <msp430x14x.h>
//#define U8 unsigned char
// P3.1|-> Data Out (SIMO0)
// | |
// <-|P3.4 P3.2|<- Data In (SOMI0)
// | |
// nsel <-|P3.5 P3.3|-> Serial Clock Out (UCLK)
#define SPI_SEL_1 P3OUT |=BIT5 //p3_5口为SPI片选
#define SPI_SEL_0 P3OUT &=~BIT5
#define RF_SDN_1 P2OUT |=BIT0 //p2_0口为输出模式,做为RF_SDN的控制
#define RF_SDN_0 P2OUT &=~BIT0
#define RF4432_SDO (P2IN &BIT2) //p2_2口为SPI数据输出
#define RF4432_IRQ (P2IN &BIT5) //p2_5口为SI4432工作状态指示端口
void SPISetup(void);
void SpiWriteRegister (char reg, char value);
char SpiReadRegister (char reg);
#endif
(原文件名:360截图20110821174537953.jpg) |
|