[求助] 关于nios ii的SPI内核使用问题

libindavis   2011-8-20 17:16 楼主

使用nios自带的SPI 内核的IORD_ALTERA_AVALON_SPI_RXDATA()命令,但在MISO线上观察不到数据,也就是说rxdata没有读取到数据,同时读取的过程中SCK上也是没有时钟信号的,这很怪异,使用读命令的话SCK不是应该输出时钟信号的么??。。。有没有人能帮忙解决下?谢谢啊~

 

 

代码如下:

 

void FlashRead(alt_u32 len, alt_u8 *buffer) //读入指定字节
{                                      
     unsigned int i;

    IOWR_ALTERA_AVALON_SPI_SLAVE_SEL(SPI_0_BASE,1);// select slave device
    IOWR_ALTERA_AVALON_SPI_CONTROL(SPI_0_BASE,0x400);//force the SS_n to output
   for (i=0;i<len;i++)
  {
     while((IORD_ALTERA_AVALON_SPI_STATUS(SPI_0_BASE) & ALTERA_AVALON_SPI_STATUS_RRDY_MSK) == 1);
      *buffer++ = GetSPIByte();                   // read data from SPI
     }
  while ((IORD_ALTERA_AVALON_SPI_STATUS(SPI_0_BASE) & ALTERA_AVALON_SPI_STATUS_TMT_MSK) == 0);
  IOWR_ALTERA_AVALON_SPI_CONTROL(SPI_0_BASE, 0);
}

[ 本帖最后由 libindavis 于 2011-8-20 17:36 编辑 ]

回复评论 (2)

估计你的SPI内核没有加载到NIOS中,所以你的调用的命令无效。

一个为理想不懈前进的人,一个永不言败人! http://shop57496282.taobao.com/ 欢迎光临网上店铺!
点赞  2011-8-20 22:18
IOWR_ALTERA_AVALON_SPI_SLAVE_SEL(SPI_0_BASE,1);// select slave device
改成:
IOWR_ALTERA_AVALON_SPI_SLAVE_SEL(SPI_0_BASE,0);// select master device
点赞  2015-3-30 14:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复