机械陀螺仪(ADS8327, STM32F405RGT6)的研究总结报告(连载)

附上ADS8327芯片中文资料的网页(百度文库):
https://wenku.baidu.com/view/b845fcce89eb172ded63b77d.html
附上有关F4时钟树RCC设置的论坛:
 http://www.openedv.com/thread-68387-1-2.html
附上F4时钟树有关的网页
http://blog.csdn.net/go_go_up/article/details/52578009
需要参考的PDF文档已分享:
链接:http://pan.baidu.com/s/1slExTzn 密码:ffe5


一. ADS8327参数
数据宽度:16bit
波特率:500ksps
引脚配置:CONVST(低电平有效,与CS片选信号相互独立,表示转换开始信号,在时序图中表现为具有一定脉冲时间间隔40ns的脉冲),EOC/INT/CDI(EOC表示的是转换过程,时间长度为18个周期,并在高电平时采样,为3个周期,采样迅速开启下一次的转换开关CONVST并迅速置低电平;INT信号为低电平有效,表示为在转换过程结束时有效,持续到下一次的数据读取;上述两个信号都可以被编程),CS(片选信号,低电平有效,表示使能ADS8327芯片,开始读取数据,基本理解为与INT的跳变时间相同)上述引脚功能介绍仅针对手动调节转换过程的“边收集数据边转换”的分析,另一种“边收集边采样”的工作流程分析在文档中按照相同方式分析。
引脚分析(这里是针对相应的机械陀螺仪的设计原理图的总结):SDI1(通过复用功能在PB15和SPI2_MOSI,表示用PB15使用SPI2_MOSI功能),SDO1(PB14和SPI2_MISO),SCL1(PB13和SPI2_SCK),CS(PB12和SPI2_NSS),GPIO配置时就需要使用复用功能,SPI传输数据的配置为全双工时SDI,SDO的引脚配置可以均为复用推挽输出。
时钟频率相关(RCC):这里SPI原始时钟频率(即在分频之前由APB1方式设置的频率)为42MHz,相应的分频系数可以在ADS8327参数表给出的频率范围内*设置,有关RCC和时钟频率相关可参见文档开头的网页。
编码方面的注意事项:
(1) ADS8327传输数据带有延迟,目前还不清楚如何确定,但是这个延迟(程序中可以由延迟函数)需要保证在两次传输时间间隔内并保证不干扰到其他过程的执行
(2) ADS8327读写操作都要注意循环等待是否发送或者接收完毕,对于写操作延迟必须加上,否则写不进去
(3) 有关ADS8327程序的编写中还需要注意,这个芯片本身有寄存器(CFR—Configuration Register配置寄存器)除了引脚的配置外,还需要往这个地方发送数据(程序里面会使用SPI发送)用来初始化和操作ADS8327,这一部分由于资料不齐,知之甚少,下面是有关16位配置的参数图,更多的配置还有待补充和说明。
 机械陀螺仪(ADS8327, STM32F405RGT6)的研究总结报告(连载)


二. Stm32f4xx配置和编码总结
与stm32f1xx的比较(只针对可能会有需要的部分):
(1) F1最高主频72MHz,F4最高主频168MHz
(2) F1的GPIO的内部上下拉电阻配置仅仅针对输入模式有用,输出时无效。而F4的GPIO在设置为输出模式时,上下拉电阻的配置依然有效。即F4可以配置为开漏输出,内部上拉电阻使能,而F1不行。
(3) 外设时钟树的频率分配,具体参考文档开头网页或者有关PDF
F4自身编码注意:开启复用功能时需要调用GPIO库中的GPIO_PinAFConfig()函数用于接口对应,第一个参数为GPIO Port,第二个是引脚标号,第三个是对应的AF值(相应的AF值可以从stm32f4xx_gpio.h文件中找到);通过分析GPIO_PinAFConfig()函数过程,可以了解到这个函数的第三个参数对应的寄存器AFLR,AFHR,相应结构可以在数据手册上找到。这次要用到的是AF5---GPIO_AF_SPI2