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

目录

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,可位寻址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值