STM32F103 소프트웨어 I2C 읽기 각도 센서 AS5600 각도 정보
# include "AS5600.H"
# include "delay.h"
# include "sys.h"
void AS5600_Init(void)
{
IIC_Init();
}
u16 AS5600_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{
//SDA_IN();
IIC_Start();
IIC_Send_Byte((addr << 1) | Write_Bit);
if (IIC_Wait_Ack())
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte((addr<<1) | Read_Bit);// +
IIC_Wait_Ack(); //
while(len)
{
if(len==1)*buf=IIC_Read_Byte(0);// , nACK
else *buf=IIC_Read_Byte(1); // , ACK
len--;
buf++;
}
IIC_Stop(); //
return 0;
}
float Get_Angle(void)
{
u8 buf[2] = {0};
u8 i = 0;
float temp = 0;
float temp1 = 0.0;
for (i = 0; i < 20; i++)
{
AS5600_Read_Len(Slave_Addr,Angle_Hight_Register_Addr,2,buf);
temp1 +=buf[0]*256+buf[1];
delay_ms(5);
//temp = (((u16)buf[0] & (0x0f00)) << 8) | buf[1];
}
// ,
temp = temp1/20;
return temp/4096*360;
}
AS5600.H
# ifndef __AS5600_H
# define __AS5600_H
# include "I2C.H"
# define Slave_Addr 0x36
# define Write_Bit 0
# define Read_Bit 1
# define Angle_Hight_Register_Addr 0x0C
# define Angle_Low_Register_Addr 0x0D
void AS5600_Init(void);
u16 AS5600_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf);
float Get_Angle(void);
# endif
이후 직렬로 Get 인쇄Angle() 함수는
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.