原子哥SPI例程SPI速度设置疑问

2019-08-14 06:08发布

下面是原子哥SPI速度设置的代码,根据原子哥的SPI初始化,SPI设置为双线双向全双工,8位帧结构,数据传输从MSB位开始
但是设置成0XFFC对应的是单线双向模式,使用16位帧结构,先发送LSB啊,为什么这样设置还可以正常工作呢?求解释。。。。。。
寄存器详细介绍见附件图片
void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler)
{
  assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));
        SPI2->CR1&=0XFFC7;
        SPI2->CR1|=SPI_BaudRatePrescaler;       
        SPI_Cmd(SPI2,ENABLE);

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-08-14 10:15
       SPI2->CR1&=0XFFC7;
        SPI2->CR1|=SPI_BaudRatePrescaler;   

下面这句就是设置波特率了
正点原子
2楼-- · 2019-08-14 15:33
FFC7,这个不知道你设置成啥样了,我们也不是这么设置的吧。。。另外,这个和速度无关
yyf
3楼-- · 2019-08-14 18:43
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-08-14 21:57
yyf 发表于 2017-8-22 11:13
你们就是这么设置的啊,库函数开发指南的PDF里也是这么写的,这个是CR1寄存器怎么和速度无关了??PDF截图 ...

哦,这里是清空之前的设置。我看错了,不好意思
yyf
5楼-- · 2019-08-15 02:37
正点原子 发表于 2017-8-23 00:57
哦,这里是清空之前的设置。我看错了,不好意思

额,但是清除之前的设置之后,只是把速度修改了,并没有重新设置回来啊,我在程序中没找到重新设置回来的地方,还望给解释一下,程序竟然还能正常使用,我很纳闷,谢谢
yyf
6楼-- · 2019-08-15 04:31
正点原子 发表于 2017-8-21 15:49
SPI2->CR1&=0XFFC7;
        SPI2->CR1|=SPI_BaudRatePrescaler;   

我说的就是你们这里设置有问题啊

一周热门 更多>