调试stm32F103C8t6作为从机,用SPI1遇到接收速率要求的问题
本帖最后由 popdes 于 2017-11-24 11:35 编辑如题:
采用stm32cubemx配置F103单片机作为从机从SPI1接收来自主机ad7655的数据时候遇到的问题
前提: F103C8 作为从机 设置为slave, ad7655这个芯片通过管脚设置为master主机发送数据, ad7655的spi频率是4.35Mhz左右
配置F103的spi1为RX only ,数据位为8位, 其他按照正常配置, 生成程序之后,运行dubug调试发现OVR溢出错误.
解决办法:
查看官方提供的F1系列Hal库使用手册(UM1850 DOCIDO27328 Rev1)2015年2月编写(最新本的手册里已经没有这句话和下面的表), 发现里面有这么句话:
Using the HAL it is not possible to reach all supported SPI frequency with the differents
SPI Modes. Table 20: "Maximum SPI frequency for 8-bit SPI data transfers" and Table 21:
"Maximum SPI frequency for 16-bit SPI data transfers" summarize the maximum SPI
frequency reached with data size 8bits/16bits, according to frequency used on APBx
Peripheral Clock (fPCLK) used by the SPI instance.还有一张频率限制表:
http://www.stm32cube.com/ueditor/php/upload/image/20171123/1511430440103782.png
本着采样频率应该是信号频率的2倍以上的原则, 按照上表所示,把8位数据改为16位数据接收之后, 一切正常.
那么问题来了::::????????????
上面那句英文的意思,我可以理解为 , hal库才有这个限制?!
因为本人对标准库和寄存器库不甚了解, 所以想知道,是不是换成寄存器操作spi或者标准库操作就没这个限制了???
配置如下:
http://www.stm32cube.com/ueditor/php/upload/image/20171123/1511429733129798.png
本文的原帖地址: http://www.stm32cube.com/question/718
再补充一点:
上面的手册是2015.2月的
我去官方下载的最新的里面是没有上面提到的东西的......
会不会是我买到的是2015年左右的芯片.....⊙﹏⊙b汗
会不会后面生成的F103的已经改进这个问题了,所以不需要提醒这个了..... 结贴:
刚刚查看spi的hal库文件,发现 stm32fxx_hal_spi.c文件里面是有这个频率介绍的,
虽然在F1的hal库手册上没写,但是生成的库里是有写的.
说明不是芯片批次问题,而是F1系列就有这个问题:lol
http://www.stm32cube.com/ueditor/php/upload/image/20171124/1511507136805557.png
页:
[1]