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

STM32 硬件SPI驱动磁编码器TLE5012B

[复制链接]
颩色四葉愺 发布时间:2019-6-28 12:04
找了一下网上的驱动程序,就一份程序被抄来抄了,有啥意思?。作者还不愿意把源代码公布,把电路和程序弄得又复杂,还要加上拉电阻,软件读取数据还要配置MOSI为开漏输入,心累。所以自己改了,现分享出来!


硬件平台:Nucle64-103,使用SPI正常读取即可

硬件连接:
硬件接线图.png
软件平台:STM32CubeMX+keil5.0+hal固件库

  1. #include "app_tle5012b.h"
  2.                                                                         


  3. uint16_t SPIx_ReadWriteByte(uint16_t byte)
  4. {

  5.         uint16_t read_value = 0;
  6.         
  7.         HAL_SPI_Transmit( &hspi1, (uint8_t *)(&byte), sizeof(byte)/sizeof(uint16_t), 0xff );
  8.         
  9.         HAL_SPI_Transmit( &hspi1, (uint8_t *)(&read_value), sizeof(read_value)/sizeof(uint16_t), 0xff );
  10.         return read_value;
  11. }


  12. double ReadAngle(void)
  13. {
  14.         return ( ReadValue(READ_ANGLE_VALUE) * 360.0 / 0x10000 );
  15. }


  16. uint16_t ReadSpeed(void)
  17. {
  18.         return ReadValue(READ_SPEED_VALUE);
  19. }


  20. uint16_t ReadValue(uint16_t u16RegValue)
  21. {
  22.         uint16_t u16Data;

  23.         SPI_CS_ENABLE;
  24.         
  25.         HAL_SPI_Transmit( &hspi1, (uint8_t *)(&u16RegValue), sizeof(u16RegValue)/sizeof(uint16_t), 0xff );
  26.         HAL_SPI_Receive( &hspi1,(uint8_t *)(&u16Data), sizeof(u16Data)/sizeof(uint16_t), 0xff );
  27.         
  28.         SPI_CS_DISABLE;

  29.         
  30.         return((u16Data & 0x7FFF )<<1);
  31. }



复制代码
  1. #ifndef _APP_TLE5012B_H_
  2. #define _APP_TLE5012B_H_

  3. #include "cpu_common.h"



  4. #define GPIO_CS_Pin_Name  GPIO_PIN_4
  5. #define GPIO_CS_Pin_Type  GPIOC


  6. #define SPI_CS_ENABLE  HAL_GPIO_WritePin( GPIO_CS_Pin_Type, GPIO_CS_Pin_Name, GPIO_PIN_RESET )
  7. #define SPI_CS_DISABLE HAL_GPIO_WritePin( GPIO_CS_Pin_Type, GPIO_CS_Pin_Name, GPIO_PIN_SET )


  8. /* SPI command for TLE5012 */
  9. #define READ_STATUS                                        0x8001                        //8000
  10. #define READ_ANGLE_VALUE                0x8021                        //8020
  11. #define READ_SPEED_VALUE                0x8031                        //8030

  12. #define WRITE_MOD1_VALUE                0x5060                                                        //0_1010_0_000110_0001
  13. #define MOD1_VALUE        0x0001

  14. #define WRITE_MOD2_VALUE                0x5080                                                        //0_1010_0_001000_0001
  15. #define MOD2_VALUE        0x0801

  16. #define WRITE_MOD3_VALUE                0x5091                                                        //0_1010_0_001001_0001
  17. #define MOD3_VALUE        0x0000

  18. #define WRITE_MOD4_VALUE                0x50E0                                                        //0_1010_0_001110_0001
  19. #define MOD4_VALUE        0x0098                                //9bit 512

  20. #define WRITE_IFAB_VALUE                0x50B1
  21. #define IFAB_VALUE 0x000D
  22. /* Functionality mode */
  23. #define REFERESH_ANGLE                0

  24. void SPI_SendData16(uint16_t SendData);
  25. uint16_t SPI_ReadData16(void);
  26. double ReadAngle(void);
  27. uint16_t ReadSpeed(void);
  28. uint16_t ReadValue(uint16_t u16Value);
  29. uint16_t SPIx_ReadWriteByte(uint16_t byte);
  30. uint16_t TlE5012W_Reg(uint16_t Reg_CMD, uint16_t Reg_Data);


  31. #endif
复制代码

读取角度打印在串口助手上
微信截图_20190628120124.png

源工程: tle5012b.rar (3.55 MB, 下载次数: 300)
收藏 3 评论18 发布时间:2019-6-28 12:04

举报

18个回答
Shore. 回答时间:2019-8-7 10:18:43
我有一个问题请教一下大家,通过SSC方式读取的角度值是绝对值吗,之前看到这篇文章《基于iGMR 原理角度传感器 TLE5012B应用指南》说的进入正常模式后读取的值是相对值,这个正常模式是不是只指IIF模式,只要是在SSC通讯方式下读取的角度信息都是绝对值?
Shore. 回答时间:2019-8-6 16:37:56
楼主你好,我现在遇到的问题是读取角度值的时候&7FFF的值不对,反而&3FFF获取的角度值才是对的,我现在是看的人家的工程,不知道为什么会出现这种情况,这就相当于15位的编码器变成14位的  我也很疑惑,望指教
noexistusr 回答时间:2019-7-5 13:51:21
原来 不加电阻也行啊, 学习了,感谢楼主分享,赞
jeffhe1 回答时间:2019-6-28 13:07:10
謝謝分享
Kevin_G 回答时间:2019-6-28 14:32:37
謝謝分享
STMCU-管管 回答时间:2019-7-2 13:46:03
谢谢分享
sincomaster 回答时间:2019-7-2 23:59:31
谢谢分享
tanic 回答时间:2019-7-8 09:51:59
记得STM32的SPI好像支持单线模式
generalcircuits 回答时间:2019-7-8 16:57:02
感谢分享!
mcza30 回答时间:2019-7-8 17:40:27
谢谢分享
pkoko 回答时间:2019-7-8 23:04:16
支持楼主,谢谢分享
天蓝蓝 回答时间:2020-3-25 21:49:15
这个程序有问题的
蓝牙 回答时间:2020-7-31 11:20:17
学习学习
jackqing 回答时间:2020-10-11 08:57:33
多谢分享,借鉴学习
12下一页

所属标签

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