我想连续写3次数据到SPI总线..(8bit)
按道理来说从示波器观察应该有24个SPCK的脉冲..
如果我Baudrate在24MHz的话,确实有.. 但如果我把Baudrate降到1MHz的话,就只剩下前面 8个SPCK了.后面的都没了. 而我要驱动的LCD12864(ST7920)最快也只有1MHz..
相关程序如下. 是不是对TDRE位判断没有用?我观察时,它总是为1,也就是说可能根本没发完,又发下一个去了.. 大哥们帮我看下..
SPI_send_byte(0xfa); SPI_send_byte(data & 0xf0); SPI_send_byte(data<<4);
void SPI_send_byte(unsigned char byte ) { while((AT91C_BASE_SPI->SPI_SR) & AT91C_SPI_TDRE != AT91C_SPI_TDRE );
AT91C_BASE_SPI->SPI_TDR = byte; }
|