Browse Source

update

master
zhaohe 2 years ago
parent
commit
53cfe58db6
  1. 5
      .vscode/settings.json
  2. 2
      README.md
  3. 139
      app/MDK-ARM/app.uvguix.h_zha
  4. 43
      app/MDK-ARM/app.uvoptx
  5. 10
      app/MDK-ARM/app.uvprojx
  6. 2
      dep/libtrinamic
  7. 31
      src/port.cpp
  8. 2
      src/port.hpp
  9. 35
      src/umain.cpp

5
.vscode/settings.json

@ -11,6 +11,9 @@
"port.h": "c",
"compare": "c",
"tmc4361a_register.h": "c",
"spi.h": "c"
"spi.h": "c",
"atomic": "cpp",
"memory": "cpp",
"random": "cpp"
}
}

2
README.md

@ -9,7 +9,7 @@ STM32F407VET6示例工程
```
1. 实现方法写入和读取一个寄存器
1. 实现方法写入和读取一个寄存器 OK
2. 初始化系统实现从tmc2130读取一个数值
3. 控制tmc4361使得电机转起来
4. 配置闭环寄存器使得电机闭环转起来

139
app/MDK-ARM/app.uvguix.h_zha
File diff suppressed because it is too large
View File

43
app/MDK-ARM/app.uvoptx

@ -153,7 +153,24 @@
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F407VETx$CMSIS\Flash\STM32F4xx_512.FLM)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>13</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134231382</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\..\src\umain.cpp</Filename>
<ExecCommand></ExecCommand>
<Expression>\\app\../../src/umain.cpp\13</Expression>
</Bp>
</Breakpoint>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
@ -728,6 +745,30 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC2160\TMC2160.c</PathWithFileName>
<FilenameWithoutPath>TMC2160.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>41</FileNumber>
<FileType>8</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\dep\libtrinamic\src\ic\tmc2160.cpp</PathWithFileName>
<FilenameWithoutPath>tmc2160.cpp</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>

10
app/MDK-ARM/app.uvprojx

@ -965,6 +965,16 @@
<FileType>1</FileType>
<FilePath>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ramp\LinearRamp1.c</FilePath>
</File>
<File>
<FileName>TMC2160.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC2160\TMC2160.c</FilePath>
</File>
<File>
<FileName>tmc2160.cpp</FileName>
<FileType>8</FileType>
<FilePath>..\..\dep\libtrinamic\src\ic\tmc2160.cpp</FilePath>
</File>
</Files>
</Group>
<Group>

2
dep/libtrinamic

@ -1 +1 @@
Subproject commit fda8617dbb4ad8624cf954e5ccc3e93f5fcb5ac2
Subproject commit 7eb4b595b55d551e62e5686cc5c478a54709787b

31
src/port.cpp

@ -29,29 +29,17 @@ void port_do_debug_light_state() {
HAL_GPIO_TogglePin(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN);
}
}
void port_spi_cs_select(uint8_t channel, bool select) {
if (channel == MOTOR_1_TMC4361A_CHANNEL) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, select ? GPIO_PIN_SET : GPIO_PIN_RESET);
} else if (channel == MOTOR_1_TMC2160_CHANNEL) {
/**
* @brief TMC2160 TMC4361A SPI
*/
return;
}
}
void port_delay_us(uint32_t us) { sys_delay_us(&DELAY_US_TIMER, us); }
void port_motor_spi_write_and_read(uint8_t channel, uint8_t* data, size_t length) {
void port_spi_cs_select(bool select) { //
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, select ? GPIO_PIN_SET : GPIO_PIN_RESET);
}
void port_tmc4361_spi_write_and_read(uint8_t* data, size_t length) {
//
if (channel == MOTOR_1_TMC4361A_CHANNEL) {
port_spi_cs_select(channel, false);
port_delay_us(1);
HAL_SPI_TransmitReceive(&hspi1, data, data, length, 1000);
port_spi_cs_select(channel, true);
} else if (channel == MOTOR_1_TMC2160_CHANNEL) {
}
port_spi_cs_select(false);
port_delay_us(1);
HAL_SPI_TransmitReceive(&hspi1, data, data, length, 1000);
port_spi_cs_select(true);
}
void port_tmc_extern_clk_enable() {
@ -65,12 +53,11 @@ void port_tmc_extern_clk_enable() {
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_4);
#endif
}
int32_t port_tmc4361_get_version(uint8_t channel) {
int value;
uint8_t data[5];
data[0] = 0x7f;
port_motor_spi_write_and_read(channel, &data[0], 5);
port_tmc4361_spi_write_and_read(&data[0], 5);
value = ((uint32_t)data[1] << 24) | ((uint32_t)data[2] << 16) | (data[3] << 8) | data[4];
return value;
}

2
src/port.hpp

@ -7,6 +7,6 @@ void port_delay_us(uint32_t us);
/*******************************************************************************
* tmc芯片驱动相关 *
*******************************************************************************/
void port_motor_spi_write_and_read(uint8_t channel, uint8_t *data, size_t length);
void port_tmc4361_spi_write_and_read(uint8_t *data, size_t length);
void port_tmc_extern_clk_enable();
int32_t port_tmc4361_get_version(uint8_t channel) ;

35
src/umain.cpp

@ -2,20 +2,51 @@
#include <stdio.h>
#include "libiflytop_micro\stm32\basic\basic.h"
#include "libtrinamic/src/ic/tmc2160.hpp"
#include "libtrinamic\src\ic\tmc4361A.hpp"
#include "port.hpp"
#include "project_board.hpp"
#define TAG "main"
void libtrinamic_readWriteArray(uint8_t channel, uint8_t *data, size_t length) {}
class TMC4361AImpl : public TMC4361A {
virtual void setResetPinState(bool state){};
virtual void setFREEZEPinState(bool state){};
virtual void setENNPinState(bool state){};
virtual bool getTargetReachedPinState() { return false; };
virtual void sleepus(int32_t us){};
virtual void readWriteArray(uint8_t *data, size_t length) { //
if (m_channel == MOTOR_1_TMC4361A_CHANNEL) {
port_tmc4361_spi_write_and_read(data, length);
}
};
};
static TMC4361A tmc4361motor1;
class TMC2160Impl : public TMC2160 {
TMC4361A *m_tmc4361;
public:
void initialize(uint8_t channel, TMC4361A *tmc4361) {
TMC2160::initialize(channel);
m_tmc4361 = tmc4361;
}
virtual void setENNPinState(bool state){};
virtual void sleepus(int32_t us){};
virtual void readWriteArray(uint8_t *data, size_t length) { m_tmc4361->readWriteCover(data, length); };
};
static TMC4361AImpl tmc4361motor1;
static TMC2160Impl tmc2160motor1;
extern "C" {
int umain(int argc, char const *argv[]) {
sys_loggger_enable(true);
// tmc4361motor1.init();
tmc4361motor1.initialize(MOTOR_1_TMC4361A_CHANNEL, TMC4361A::IC_TMC2160);
tmc2160motor1.initialize(MOTOR_1_TMC2160_CHANNEL, &tmc4361motor1);
ZLOGI(TAG, "VERSION:%s", VERSION);
port_tmc_extern_clk_enable();

Loading…
Cancel
Save