DSP

ST7920的12864液晶spi 串行方式原理

2019-07-13 16:22发布

ST7920主控的液晶支持SPI通讯。利用面包板连接DSP与液晶,主要管脚的连接如下所示:      F2812                          液晶
     E(SCLK)                       SPICLK
     RW(SID)                       SPIMOSI
     RS(CS)                         SPISTE      另外,很重要的一点,液晶的PSB管脚必须连接GND,才能使液晶工作在SPI模式。SPI模式中的液晶只能接受数据,无法发送数据,故没有办法像并口控制那样依靠判断CF来确定指令的执行情况,故必须保证指令执行的时间必须充足。 照片-1799      然后初始化F2812的SPI模块。
void InitSpia(void)
{
    // Initialize SPI-A:
    SpiaRegs.SPICCR.bit.SPISWRESET = 0;        // Reset SPI module
    SpiaRegs.SPICCR.all = 0x07;                // Reset on, rising edge, 8-bit char
    SpiaRegs.SPICTL.all = 0x0E;                // Enable master mode,  phase (with delay), enable talk,
                                               // and SPI int enabled
    SpiaRegs.SPIBRR = 35;                      //
    SpiaRegs.SPISTS.all = 0x00;
    SpiaRegs.SPIPRI.all = 0x10;                // Free
    SpiaRegs.SPICCR.all = 0x87;                // Enable SPI
}
     按照液晶模块要求的SPI数据格式写指令或数据,根据时序图和我的实验,液晶模块应该是上升沿保存数据。“從一個完整的串列傳輸流程來看,一開始先傳輸啟始位元組,它需先接收到五個連續的〝1〞(同步位元字串)在啟始位元組,此時傳輸計數將被重置並且串列傳輸將被同步,再跟隨的兩個位元字串分別指定傳輸方向位元(RW)及暫存器選擇位元(RS),最後第八的位元則為〝0〞。在接收到同步位元及RW和RS資料的啟始位元組後,每㆒個八位元的指令將被分為兩個位元組接收到:較高4位元(DB7~DB4)的指令資料將會被放在第一個位元組的LSB部分,而較低4位元(DB3~DB0)的指令資料則會被放在第二個位元組的LSB部分,至於相關的另四位元則都為0。” imageimage          由于ST7920的指令执行周期较长,利用SPI中断方式发送数据,并不能提高数据传输效率,采用延时的方式,暂时实现对液晶的操作。 初始化代码如下: