你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F103的SPI,读操作的时候没有时钟是怎么回事?

[复制链接]
i_am_me 提问时间:2015-7-17 11:55 /
是不是我配置的有问题?我用的SPI1,配置代码如下
        SPI_InitTypeDef SPI_InitStruct;
        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_SPI1, ENABLE );        
        RCC_APB1PeriphClockCmd(        RCC_APB1Periph_SPI2, ENABLE );        
        
        /*失能*/
        SPI_I2S_DeInit(SPI1);
        SPI_I2S_DeInit(SPI2);
        
        SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge;                                                                                                        //数据捕获于第二个时钟沿
        SPI_InitStruct.SPI_CPOL = SPI_CPOL_High;                                                                                                        //串行时钟的稳态:时钟悬空高
        SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;        //定义波特率预分频的值:波特率预分频值为16   (SPI 4.5M@sys 72M)
        SPI_InitStruct.SPI_CRCPolynomial = 7;                             //CRC值计算的多项式
        SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;   //SPI设置为双线双向全双工
        SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;                    //SPI发送接收8位帧结构
        SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;                          //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
        SPI_InitStruct.SPI_Mode = SPI_Mode_Master;                        //主模式
        SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;                                        //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
        SPI_Init(SPI1,&SPI_InitStruct);
        SPI_Cmd(SPI1, ENABLE);


示波器观察的信号波形

示波器观察的信号波形

代码

代码
收藏 评论9 发布时间:2015-7-17 11:55

举报

9个回答
moyanming2013 回答时间:2015-7-17 12:34:02
帮顶。。。
i_am_me 回答时间:2015-7-17 12:38:01
跪求大神
creep 回答时间:2015-7-17 12:51:57
读操作要有MCU来写数据提供时钟啊。一般写0xff或者0x00到从设备来提供读取的时钟。
i_am_me 回答时间:2015-7-17 12:57:15
creep 发表于 2015-7-17 12:51
读操作要有MCU来写数据提供时钟啊。一般写0xff或者0x00到从设备来提供读取的时钟。 ...

恩,多谢了,现在可以了,在示波器上显示的波形跟手册上写的返回值对应了,不过通过软件读出来的值一直是0xff,
creep 回答时间:2015-7-17 13:35:03
i_am_me 发表于 2015-7-17 12:57
恩,多谢了,现在可以了,在示波器上显示的波形跟手册上写的返回值对应了,不过通过软件读出来的值一直是 ...

那就好,通信没有问题的话就再找找其他的原因。
i_am_me 回答时间:2015-7-17 13:50:17
creep 发表于 2015-7-17 13:35
那就好,通信没有问题的话就再找找其他的原因。

嗯嗯,好的,多谢帮忙
dsjsjf 回答时间:2015-7-17 22:53:47
顶顶顶   
yanhaijian 回答时间:2015-7-18 09:03:53
i_am_me 发表于 2015-7-17 12:57
恩,多谢了,现在可以了,在示波器上显示的波形跟手册上写的返回值对应了,不过通过软件读出来的值一直是 ...

SPI无非就那两个参数,不行就一个个试,也只要试4次。
i_am_me 回答时间:2015-7-18 10:50:05
yanhaijian 发表于 2015-7-18 09:03
SPI无非就那两个参数,不行就一个个试,也只要试4次。

我用时钟第一个上升沿读取的话,读到ID是正确的,但其他寄存器读的是错的,用时钟第二个上升沿读的ID是错的,其他寄存器是正确的,,,很奇怪。之前没用过L3G4200,,不知道是否是这样

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版