当前位置:网站首页>CH549/CH548学习笔记5 - SPI主模式

CH549/CH548学习笔记5 - SPI主模式

2022-07-18 01:07:00 pq113_6

目录

1. 时钟频率

2. IO设置

3. SPI0_SETUP设置

4.  SPI0_CTRL

5. 读写数据


CH549/CH548拥有1个硬件SPI接口,支持主/从模式,这里只讨论主模式。另外,SPI主模式只支持模式0和模式3,考虑常用性,只设置为模式0。

1. 时钟频率

CH549/CH548通过寄存器SPI0_CK_SE(默认为0x20)设置频率,最高可达系统主频的一半。datasheet上没有说明计算公式,猜测是

freq = Fsys / (SPI0_CK_SE + 1)

2. IO设置

    P1_MOD_OC &= ~(bMOSI | bSCK);
    P1_DIR_PU |= (bMOSI | bSCK);                 //SCS, MOSI, SCK设推挽输出
    P1_MOD_OC |= bMISO;                                 //MISO 上拉输入
    P1_DIR_PU |= bMISO;

这里CS脚用的是P1.4,实际可以换为任意IO,SCS功能是用于从模式。

3. SPI0_SETUP设置

主模式下有效的位:

 一般情况下不使用中断,一般为MSB高位在前,所以这些位都为0.

4.  SPI0_CTRL

 设置MOSI和SCK为输出(位6和位5设置为1),模式0(位3设置为0),三线模式(位2设置为0)

SPI0_CTRL = (bS0_MOSI_OE | bS0_SCK_OE);

5. 读写数据

SPI0_DATA = (wrBuf != NULL) ? wrBuf[i] : 0xff;
while(S0_FREE == 0);
if(rdBuf != NULL)
    rdBuf[i] = SPI0_DATA;

SPI是全双工,所以读写同步完成。SPI0_DATA寄存器是两个物理上分开的 FIFO,读操作对应接
收数据 FIFO;写操作对应发送数据 FIFO。

S0_FREE是寄存器SPI0_STAT的位3,可位寻址

原网站

版权声明
本文为[pq113_6]所创,转载请带上原文链接,感谢
https://blog.csdn.net/pq113_6/article/details/121232802