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