裸跑F1C100S 使用SPI1时候发现,设置spi1寄存器,再读取发现一直时0,没有设置进去。有朋友遇到过没。
SPI1时钟已经开启:
// SPI1 打开时钟 //
write32( 0x01C20060, (read32(0x01C20060) | (1<<21)) );
SPI1寄存器基地址也没错0x01c06000,读取SPI0的寄存器就可以返回数据。
离线
裸跑F1C100S 使用SPI1时候发现,设置spi1寄存器,再读取发现一直时0,没有设置进去。有朋友遇到过没。
SPI1时钟已经开启:
// SPI1 打开时钟 //
write32( 0x01C20060, (read32(0x01C20060) | (1<<21)) );SPI1寄存器基地址也没错0x01c06000,读取SPI0的寄存器就可以返回数据。
使能时钟后一般要使能时钟复位。200s手册上可以查到 spi1_rst是偏移0x02c0地址寄存器的第21位。
所以你可以在后面加上一句write32( 0x01C20000+0x2c0, (read32(0x01C20000+0x2c0) | (1<<21)) );
然后在延时个1ms。然后再操作寄存器看。
离线
sjshe3326 说:裸跑F1C100S 使用SPI1时候发现,设置spi1寄存器,再读取发现一直时0,没有设置进去。有朋友遇到过没。
SPI1时钟已经开启:
// SPI1 打开时钟 //
write32( 0x01C20060, (read32(0x01C20060) | (1<<21)) );SPI1寄存器基地址也没错0x01c06000,读取SPI0的寄存器就可以返回数据。
使能时钟后一般要使能时钟复位。200s手册上可以查到 spi1_rst是偏移0x02c0地址寄存器的第21位。
所以你可以在后面加上一句write32( 0x01C20000+0x2c0, (read32(0x01C20000+0x2c0) | (1<<21)) );
然后在延时个1ms。然后再操作寄存器看。
非常感谢,的确加上bus rst就正常了。
离线