使用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 编辑 ]
此帖出自
小平头技术问答
估计你的SPI内核没有加载到NIOS中,所以你的调用的命令无效。
一周热门 更多>