用FPGA做陀螺的信号采集,SOPC中用的是SPI总线,在Nios II中程序怎么写?
展开全部
void init_spi(void)
{
IOWR_32DIRECT(SPI_BASE,12,0xc0);//bit6 bit7 置1使能发送接收等待标志
IOWR_32DIRECT(SPI_BASE,8,0x60);//bit5 传输移位寄存器空标志 bit6 发送等待
}
alt_u8 spi_process(alt_u8 txdata)
{
alt_u8 rxdata;
alt_u32 spi_status_reg;
//发送数据
do{
spi_status_reg = IORD_32DIRECT(SPI_BASE,8);
}while((spi_status_reg & 0x40) != 0x40);
IOWR_32DIRECT(SPI_BASE,4,txdata);
//接收数据
do{
spi_status_reg = IORD_32DIRECT(SPI_BASE,8);
}while((spi_status_reg & 0x80) != 0x80);
rxdata = IORD_32DIRECT(SPI_BASE,0);
return rxdata;}
有这两个基本函数就可以通讯了,剩下的就要看你的陀螺仪的手册进行配置...
{
IOWR_32DIRECT(SPI_BASE,12,0xc0);//bit6 bit7 置1使能发送接收等待标志
IOWR_32DIRECT(SPI_BASE,8,0x60);//bit5 传输移位寄存器空标志 bit6 发送等待
}
alt_u8 spi_process(alt_u8 txdata)
{
alt_u8 rxdata;
alt_u32 spi_status_reg;
//发送数据
do{
spi_status_reg = IORD_32DIRECT(SPI_BASE,8);
}while((spi_status_reg & 0x40) != 0x40);
IOWR_32DIRECT(SPI_BASE,4,txdata);
//接收数据
do{
spi_status_reg = IORD_32DIRECT(SPI_BASE,8);
}while((spi_status_reg & 0x80) != 0x80);
rxdata = IORD_32DIRECT(SPI_BASE,0);
return rxdata;}
有这两个基本函数就可以通讯了,剩下的就要看你的陀螺仪的手册进行配置...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询