麦歌恩MT6816磁编码器调试

麦歌恩MT6816磁编码器调试
因为所作产品需要使用到磁编码器,所以对国内的一些磁编码器进行了调研,并进行了总结,对比总结表格如下:
在这里插入图片描述
上面的除了第一款是市面上使用较多的国外编码器外,剩下的都是在国内流片的磁编,这几款国产磁编进行了相关的测试,此篇文章进行了麦歌恩MT6816的程序分享,使用四线spi进行通信,基本逻辑是拉低片选,先输入0x83,写入03寄存器的地址和指令,读取03寄存器的数据,拉高片选,得到第一个数据,再次拉低片选,写入0x04寄存器的地址和指令,读取04寄存器的数据,拉高片选,重复得到05的,然后按照表格上的顺序进行运算,将03数据左移8位,加上04的数据,得到的新数据左移2位得到角度数值,除以16384,乘以角度360°得到角度值。时序和程序如下所示:
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

我所使用的为STM32F405,SPI的基础设置代码里不贴了。

`	uint8_t TxData1=0x83;
	uint8_t TxData2=0x84;
	uint8_t TxData3=0x00;
	uint8_t TxData4=0x00;
	void MT6816_ReadAngle(uint8_t MSx_CSQ)
{	
	  	uint8_t u8Data11 = 0x00;
		uint8_t u8Data12 = 0x00;

		
				SPIx_CS1_ON;
//				HAL_SPI_Transmit(&hspi1,&TxData1,1,10);
//				HAL_SPI_Receive(&hspi1,&u8Data11,1,10);
//				SPIx_CS1_OFF;

//				SPIx_CS1_ON;
//				HAL_SPI_Transmit(&hspi1,&TxData2,1,10);
//				HAL_SPI_Receive(&hspi1,&u8Data12,1,10);
//				SPIx_CS1_OFF;

				MyAngle1 = (((float)((u8Data11*256+u8Data12)/4)/16384)*360);
}

在spi.h文件中进行片选信号的定义

#define  SPIx_CS1_ON  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5 ,GPIO_PIN_RESET)		//ƬѡÒý½Å(PA4)---×¢ÒâĬÈÏÓ¦¸ÃÀ­¸ß
#define  SPIx_CS1_OFF  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5 ,GPIO_PIN_SET)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值