目录
1. 时钟频率
2. IO设置
3. SPI0_SETUP设置
4. SPI0_CTRL
5. 读写数据
CH549/CH548拥有1个硬件SPI接口,支持主/从模式,这里只讨论主模式。另外,SPI主模式只支持模式0和模式3,考虑常用性,只设置为模式0。
CH549/CH548通过寄存器SPI0_CK_SE(默认为0x20)设置频率,最高可达系统主频的一半。datasheet上没有说明计算公式,猜测是
freq = Fsys / (SPI0_CK_SE + 1)
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功能是用于从模式。
主模式下有效的位:
一般情况下不使用中断,一般为MSB高位在前,所以这些位都为0.
设置MOSI和SCK为输出(位6和位5设置为1),模式0(位3设置为0),三线模式(位2设置为0)
SPI0_CTRL = (bS0_MOSI_OE | bS0_SCK_OE);
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,可位寻址
本文发布于:2024-01-29 15:03:56,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170651184016121.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |