本人使用的调试环境为ADS1.2, LPC2132 CPU, 该板上有一片串行Flash 芯片M25P64, 本人使用SPI0的与其通信,但是不能读出数据,请调通过的大侠给与帮助.
有示波器观察 MOSI, CLK 的波形均正确,但MISO没有任何输出. 一个从机,CS硬件直接接地。。。
void DelayNS(uint32 dly) { uint32 i;
for(; dly>0; dly--) for(i=0; i<5000; i++); }
/**************************************************************************** * 名称:MSpiIni() * 功能:初始化SPI接口,设置为主机。 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void MSpiIni(void) { S0PCCR = 0x52; // 设置SPI时钟分频 S0PCR = 0x70; // 设置SPI接口模式,MSTR=1,CPOL=1,CPHA=1,LSBF=0 }
/**************************************************************************** * 名称:MSendData() * 功能:向SPI总线发送数据,并接收从机发回的数据。 * 入口参数:data 待发送的数据 * 出口参数:返回值为接收到的数据 ****************************************************************************/ uint8 MSendData(uint8 data) { S0PDR = data; while( 0==(S0PSR&0x80) ); // 等待SPIF置位,即等待数据发送完毕 return(S0PDR); }
int main(void) { uint8 i; PINSEL0 = 0x00005500; // 设置SPI0管脚连接? PINSEL1 = 0x00000000;
MSpiIni(); // 初始化SPI接口
MSendData(0x9f); MSendData(0xaa); MSendData(0xaa); MSendData(0xaa); DelayNS(10);
while(1);
}
|