完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
看到很多朋友到处发帖问这个TLE5012b的角度读取例程,其实不怎么难的东西,关键还是要你自己详细读取手册才行,这里我就放出个差不多的代码吧,帮助那些已经攻占了很久的朋友,如果你攻占了很久,一看我代码你就一目了然,如果你没有研究,那抱歉你可能看不懂,请继续回去查看手册,我这个是自己用的代码,工作读数很正常。
1.首先介绍一下TLE5012b,这个是英飞凌的一个磁传感器,很跨时代的一个产品,综合性能都很高,15位解析度,20khz刷新率,典型8mhz的spi时钟,我用了9mhz也正常,呵呵,因为STM32的硬件spi 72M分频,只能8,16,等等,没法凑到8MHZ,只能凑到9mhz,也无可厚非啊,反正tle没说不能9MHZ,我就试了9mhz,可以的 2.关于硬件的接线,因为tle是3线制的spi,也就是data是一根线,仔细看手册你会发现,手册上说了,tle收mcu指令的时候,data是高阻态,tle发数据时候是推挽模式,那么硬件怎么用呢,把stm32的mosi和miso连接在一起,因为miso是配置成为复用浮空输入的(ps如果你在操作spi的时候miso配置的是复用推挽,说这里spi应该配置成复用推挽,我只能说,你学习不用脑子,把stm32的spi的miso配置成为复用推挽是错误的,正确应该配置成为浮空输入,之所以错误的也能用spi正常工作,请仔细看stm32的手册,查找为什么配置错误了也能工作,确实是能工作的,原因手册上面看明白就知道为什么了)miso是浮空输入,这个可以不用管了,管mosi,这个是首先要发数据的,然后发完指令之后,要发空指令,目的是为了让硬件sck工作,使得tle能发出来数据,如果你用开漏的模式,也就是mosi配置成为开漏的话,你不需要把tle配置成为开漏,硬件连接如下图 只要你先是操作mcu的mosi发指令,tle会收到,然后操作mcu的mosi发送FFFF,切记全是F,是16位的,开漏模式发F等于将mcu的mosi释放对总线的控制,这时候tle控制mosi总线,也就是data总线,那么miso就能收到了,一切就都正常工作了 3.如果你想要速度更快一点,那就要把mcu的mosi配置成为推挽输出,依然可以用上面的电路,也可以把这个上拉电阻去了,不去等于驱动能力更强一点,原理是,首先配置成为推挽,发指令的时候,tle的data是高阻抗,没有关系,tle收到指令,然后注意这里,操作gpio的寄存器,给mosi配置成为复用开漏输出,这步完成之后,发送0xFFFF,tle接管data总线,它变成推挽输出,而这时候的mcu的mosi是开漏,等于释放了总线,miso就能收到tle发来的数据了。 4.好了,基本操作都说的很清楚了,我知道有些朋友可能喜欢代码,其实我个人更喜欢思路,不喜欢看别人代码,尤其别人写代码,注释太少,思路不明了,看起来麻烦,这里我放出示例代码,和注释,思路还是比较清楚的,仅供参考,欢迎有兴趣的朋友一起交流 这帖子我在21ic也发过一次,都是我原创的,这里代码仅供参考,可以正常使用的, 下面是我的问题了,希望大神不吝赐教 有没有试过用tle5012b去读角速度值,读出来的是什么东西?我读了角速度值的寄存器,但是读出来的数值摸不出规律来,一会变成了32767,一会又是2,10等等的,很不清楚这个规律,我想是不是他传出来的是两次读数之间的差值?那么负差值它怎么处理呢,就是我正反转的问题,它怎么反应角速度值呢?此外我看了里面有个Tupd,这个时间是内部的固定时间还是我采样之间的时间间隔,要我自己去计算的吗?它反应两次读数之间的差值,是它自己反应的我两次读数之间的差值还是它内部的两次数据准备好刷新数据之间的差值?这些东西我看寄存器是手册和说明书并没有获得我的答案,十分难解疑惑啊 |
|
相关推荐
20个回答
|
|
按手册上的说明,计算角速度和4个寄存器的值有关。
第一个是ASPD寄存器的ANG_SPD,用符号数存了角速度值, 第二个是MOD_1寄存器的FIR_MD,设置刷新时间,可以选42.7 μs、85.3 μs、170.6 μs三种状态, 第三个是MOD_2寄存器的ANG_RANG,设置角度范围,默认是有符号的±16384来表示360°的范围, 第四个是MOD_2寄存器的PREDICT,设置要不要预测速度。 用这几个值计算角速度的公式是: 当PREDICT开启,角速度[单位:°/s] = ANG_RANG[单位:°] / 32768 * ANG_SPD[单位:数值] / (2 * FIR_MD[单位:s]), 当PREDICT关闭,角速度[单位:°/s] = ANG_RANG[单位:°] / 32768 * ANG_SPD[单位:数值] / (3 * FIR_MD[单位:s]) |
|
|
|
只有小组成员才能发言,加入小组>>
请教个XMC1404调试串口接收时为什么一直无法接收数据的问题
379 浏览 0 评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6458 浏览 2 评论
4113 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3644 浏览 9 评论
1237 浏览 8 评论
469浏览 2评论
277浏览 2评论
388浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6475浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
476浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 09:02 , Processed in 0.927017 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号