工程调试过程中,使用到以下语句
for (i =0; i<4; i++)
{
cs_low(CS_PIN);
spi_read_byte(0xff);
cs_high(CS_PIN);
}
芯片主频是168MHz,在使用示波器测试信号时,只能测试到CS引脚的第一个下降沿和最后一个上升沿,中间无电平变化。如果在cs_high(CS_PIN)语句后面加入1us的延时,当然可以解决问题。但究其原因是因为从cs_high(CS_PIN)输出高电平的时间太短,GPIO还没有来得及输出高电平就又被分配了低电平指令。手册相关介绍如下
我板卡VDD=3.3V,GPIO翻转电平最快是60MHz(166ns)。经测试,在cs_high(CS_PIN)语句后面增加180ns以上的_nop()延时,GPIO则可以有效输出高电平。