Skip to content

Commit 8cd9886

Browse files
committed
ma730 SSI mode is working
1 parent 19a7e33 commit 8cd9886

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

src/encoders/ma730/MA730.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ enum FieldStrength {
2828
#define MA730_BITORDER MSBFIRST
2929

3030
static SPISettings MA730SPISettings(8000000, MA730_BITORDER, SPI_MODE3); // @suppress("Invalid arguments")
31-
static SPISettings MA730SSISettings(8000000, MA730_BITORDER, SPI_MODE1); // @suppress("Invalid arguments")
31+
static SPISettings MA730SSISettings(4000000, MA730_BITORDER, SPI_MODE1); // @suppress("Invalid arguments")
3232

3333

3434
class MA730 {
@@ -41,6 +41,7 @@ class MA730 {
4141
float getCurrentAngle(); // angle in radians, return current value
4242

4343
uint16_t readRawAngle(); // 14bit angle value
44+
uint16_t readRawAngleSSI(); // 14bit angle value
4445

4546
uint16_t getZero();
4647
uint8_t getBiasCurrentTrimming();

src/encoders/ma730/MagneticSensorMA730SSI.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,28 @@ MagneticSensorMA730SSI::MagneticSensorMA730SSI(SPISettings settings) : settings(
77
}
88

99

10-
MagneticSensorMA730SSI::~MagneticSensorMA730SSI(){
10+
MagneticSensorMA730SSI::~MagneticSensorMA730SSI() {
1111

1212
}
1313

14-
1514
void MagneticSensorMA730SSI::init(SPIClass* _spi) {
1615
this->spi=_spi;
1716
this->Sensor::init();
1817
}
1918

2019
// check 40us delay between each read?
2120
float MagneticSensorMA730SSI::getSensorAngle() {
22-
float angle_data = readRawAngle();
23-
angle_data = ( angle_data / (float)MA730_CPR) * _2PI;
21+
float angle_data = readRawAngleSSI();
22+
angle_data = ( angle_data / (float)MA730_CPR ) * _2PI;
2423
// return the shaft angle
2524
return angle_data;
2625
}
2726

2827

29-
30-
uint16_t MagneticSensorMA730SSI::readRawAngle() {
28+
uint16_t MagneticSensorMA730SSI::readRawAngleSSI() {
3129
spi->beginTransaction(settings);
3230
uint16_t value = spi->transfer16(0x0000);
33-
uint8_t parity = spi->transfer(0x00);
34-
// TODO: check parity
31+
//uint16_t parity = spi->transfer(0x00);
3532
spi->endTransaction();
36-
return value>>2;
33+
return (value>>1)&0x3FFF;
3734
}; // 14bit angle value

src/encoders/ma730/MagneticSensorMA730SSI.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ class MagneticSensorMA730SSI : public Sensor {
1414

1515
virtual void init(SPIClass* _spi = &SPI);
1616

17-
uint16_t readRawAngle();
17+
uint16_t readRawAngleSSI();
18+
1819
private:
1920
SPIClass* spi;
2021
SPISettings settings;

0 commit comments

Comments
 (0)