发个msp430的IO口模拟SPI
unsigned char SPI_Read(void){
unsigned char i,temp=0;
RF4432_SCLK_0;
delay_nus(1);
for(i=0;i<8;i++)
{
temp<<=1;
RF4432_SCLK_1;
delay_nus(1);
if (RF4432_SDO) //读取最高位,保存至最末尾,通过左移位完成整个字节
temp |= 0x01;
RF4432_SCLK_0;
delay_nus(1);
}
RF4432_SCLK_0;
delay_nus(1);
return temp;
}
void SPI_Write(unsigned char txdata)
{
unsigned char i;
RF4432_SCLK_0;
delay_nus(1);
for(i=0;i<8;i++)
{
RF4432_SCLK_0;
if(0x80&txdata)
RF4432_SDI_1;
else RF4432_SDI_0;
delay_nus(1);
RF4432_SCLK_1;
delay_nus(1);
txdata<<=1;
}
RF4432_SCLK_0;
delay_nus(1);
}
//********************************************************************************//
//* 函数名: RF4432_WriteReg( ) //
//* 函数功能: RF4432寄存器写入函数 //
//********************************************************************************//
voidSpiWriteRegister(unsigned charaddr, unsigned char value)
{
RF4432_SEL_0;
delay_nus(1);
SPI_Write(addr|0x80); //地址最高位置1
SPI_Write(value);
RF4432_SEL_1;
delay_nus(1);
}
//********************************************************************************//
//* 函数名: RF4432_ReadReg(unsigned charaddr) //
//* 函数功能: RF4432寄存器读取函数 //
//********************************************************************************//
unsigned charSpiReadRegister(unsigned charaddr)
{
unsigned char value;
RF4432_SEL_0;
delay_nus(1);
SPI_Write(addr|0x7f);//地址最高位置0
value = SPI_Read();
RF4432_SEL_1;
delay_nus(1);
return value;
}
spi.h文件中需定义:
#define IO_SPI_DIR P2DIR |=BIT0+BIT1+BIT3+BIT4//p2的0,1,3,4管脚为输出,其余为输入
#define RF_SDN_1 P2OUT |=BIT0 //p2_0口为输出模式,做为RF_SDN的控制
#define RF_SDN_0 P2OUT &=~BIT0
#define RF4432_SDI_1P2OUT |=BIT1 //p2_1口为SPI数据输入
#define RF4432_SDI_0P2OUT &=~BIT1
#define RF4432_SEL_1P2OUT |=BIT4//p2_4口为SPI片选
#define RF4432_SEL_0P2OUT &=~BIT4
#define RF4432_SCLK_1 P2OUT |=BIT3//p2_3口为SPI时钟输出
#define RF4432_SCLK_0 P2OUT &=~BIT3
#define RF4432_SDO (P2IN &BIT2) //p2_2口为SPI数据输出
#define RF4432_IRQ (P2IN &BIT5)//p2_5口为SI4432工作状态指示端口 f149自带 还不怎么会用...... 只会模拟 汗 有没有用430的USART的SPI模式驱动SD卡的程序? 求教楼主个问题,在用430内置USART模块的SPI模式初始化SD卡的时候,SD卡的时序要求初始化要48个byte,而430单片机的发送缓存一次只能发8个byte,这个怎么整? 楼主还没现身呢..../emotion/em024.gif
页:
[1]