MTK的东西便宜是真的便宜,好用也相对比较好用,但是总有那么几个地方,让人用着心里就窝火,就MT76x8来说,第一个窝火的地方就是启动跳线选择,非得把串口用作启动跳线,导致调试起来非常麻烦,第二个就是本文要说的SPI问题,此问题分析和测试了很久,主要是关于spi 半双工和全双工的问题。
首先,来看下datesheet关于SPI Master的描述:
一共就这么几个寄存器:
关于半双工和全双工的描述在SPI_MASTER的BIT10
仅仅只有more_buf_mode=1时,全双工才有效;
关于more_buf_mode的描述如下:
即当more_buf_mode = 0时,spi控制器的传输数据域最多有2个字节,等于1时,最多有8个字节;此处为什么写传输数据域,不是最多发送字节数,继续看关于more_buf_mode的描述
等于0,即只能工作于半双工模式;等于1,可以选择半双工,也可以全双工;此处我们只分析1的情况,因为0传输的数据是在太少了;
等于1 及 半双工时:SPI_OP_ADDR 寄存器也用作了数据寄存器,加上D0-D8几个,一共9个寄存器,