123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038 |
- /************************************************************************
- Project: Welling Motor Control Paltform
- Filename: i2c_master.h
- Partner Filename: i2c_master.c
- Description: The header file of i2c_master.c
- Complier: IAR Embedded Workbench for ARM 8.40.2
- CPU TYPE : GD32F30x
- *************************************************************************
- Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
- All rights reserved.
- *************************************************************************
- *************************************************************************
- Revising History (ECL of this file):
- liyue create this file;
- ************************************************************************/
- /************************************************************************
- Beginning of File, do not put anything above here except notes
- Compiler Directives
- ************************************************************************/
- #ifndef I2C_MASTER_H
- #define I2C_MASTER_H
- /************************************************************************
- Included File
- *************************************************************************/
- #include "user.h"
- #include "AssistCurve.h"
- #include "bikespeed.h"
- #include "Cadence.h"
- /************************************************************************
- Compiler Directives (N/A)
- *************************************************************************/
- #ifdef _I2C_MASTER_C_
- #define _I2C_MASTER_EXT
- #else
- #define _I2C_MASTER_EXT extern
- #endif
- /************************************************************************
- Definitions & Macros
- *************************************************************************/
- /* EEPROM information */
- #define I2C_EE_SIZE_NBYTES 1024 // 24C08: 8Kb,16Bytes/Page,64Pages
- #define I2C_EE_PAGESIZE_NBYTES 16
- #define I2C_EE_SIZE_NBLOCKS I2C_EE_SIZE_NBYTES / 256
- #define I2C_EE_SIZE_NPAGES I2C_EE_SIZE_NBYTES / I2C_EE_PAGESIZE_NBYTES
- #define I2C_SLAVEADDR_BLOCK1 0x00A0 // First 256 Bytes:0xA0, Second:0xA2,...0xA4,0xA6
- #define I2C_SLAVEADDR_BLOCK2 0x00A2 // A0/A2/A4/A6: 7-bit slave address to be sent
- #define I2C_SLAVEADDR_BLOCK3 0x00A4
- #define I2C_SLAVEADDR_BLOCK4 0x00A6
- /* Size of parameter written to EEPROM */
- #define I2C_MOTOR_PARA_N_BYTES 38 // I2C_SLAVEADDR_BLOCK1
- #define I2C_BIKE_PARA_N_BYTES 26 // I2C_SLAVEADDR_BLOCK1
- #define I2C_MCONTROL_PARA_N_BYTES 36 // I2C_SLAVEADDR_BLOCK1
- #define I2C_SENSOR_PARA_N_BYTES 40 // I2C_SLAVEADDR_BLOCK1
- #define I2C_ASSIST_PARA_N_BYTES 40 // I2C_SLAVEADDR_BLOCK1
- #define I2C_HISTORY_PARA_N_BYTES 78 // I2C_SLAVEADDR_BLOCK3
- #define I2C_MOTOR_PARA_N_WORDS I2C_MOTOR_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
- #define I2C_BIKE_PARA_N_WORDS I2C_BIKE_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
- #define I2C_MCONTROL_PARA_N_WORDS I2C_MCONTROL_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
- #define I2C_SENSOR_PARA_N_WORDS I2C_SENSOR_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
- #define I2C_ASSIST_PARA_N_WORDS I2C_ASSIST_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK1
- #define I2C_HISTORY_PARA_N_WORDS I2C_HISTORY_PARA_N_BYTES / 2 // I2C_SLAVEADDR_BLOCK3
- #define I2C_PBUFFER_NWORDS 5
- /* Address of parameter written to EEPROM */
- #define I2C_MOTOR_PARA_ARDDR 0X00
- #define I2C_BIKE_PARA_ARDDR I2C_MOTOR_PARA_ARDDR + I2C_MOTOR_PARA_N_BYTES
- #define I2C_MCONTROL_PARA_ARDDR I2C_BIKE_PARA_ARDDR + I2C_BIKE_PARA_N_BYTES
- #define I2C_SENSOR_PARA_ARDDR I2C_MCONTROL_PARA_ARDDR + I2C_MCONTROL_PARA_N_BYTES
- #define I2C_ASSIST_PARA_ARDDR I2C_SENSOR_PARA_ARDDR + I2C_SENSOR_PARA_N_BYTES
- #define I2C_HISTORY_PARA_ARDDR 0x00
- #define I2C_MOTOR_PARA_CRC_ARDDR I2C_ASSIST_PARA_ARDDR + I2C_ASSIST_PARA_N_BYTES
- #define I2C_BIKE_PARA_CRC_ARDDR I2C_MOTOR_PARA_CRC_ARDDR + 2
- #define I2C_MCONTROL_PARA_CRC_ARDDR I2C_BIKE_PARA_CRC_ARDDR + 2
- #define I2C_SENSOR_PARA_CRC_ARDDR I2C_MCONTROL_PARA_CRC_ARDDR + 2
- #define I2C_ASSIST_PARA_CRC_ARDDR I2C_SENSOR_PARA_CRC_ARDDR + 2
- #define I2C_HISTORY_PARA_CRC_ARDDR I2C_HISTORY_PARA_ARDDR + I2C_HISTORY_PARA_N_BYTES
- /* I2C TX size: cannot exceed 255, CRC: 6 Bytes */
- #define I2C_TX1_NBYTES \
- 10 + I2C_MOTOR_PARA_N_BYTES + I2C_BIKE_PARA_N_BYTES + I2C_MCONTROL_PARA_N_BYTES + I2C_SENSOR_PARA_N_BYTES + I2C_ASSIST_PARA_N_BYTES // 172 bytes
- #define I2C_RETX1_TIMES 1
- #define I2C_TX2_NBYTES 2 + I2C_HISTORY_PARA_N_BYTES // 78 Bytes
- #define I2C_RETX2_TIMES 1
- #define I2C1_TX_DMA_NUM (I2C_TX1_NBYTES > I2C_TX2_NBYTES ? I2C_TX1_NBYTES : I2C_TX2_NBYTES)
- /* I2C RX size: cannot exceed 255 */
- #define I2C_RX1_NBYTES I2C_TX1_NBYTES
- #define I2C_RX2_NBYTES I2C_TX2_NBYTES
- #define I2C1_RX_DMA_NUM (I2C_RX1_NBYTES > I2C_RX2_NBYTES ? I2C_RX1_NBYTES : I2C_RX2_NBYTES)
- #define I2C_RX_TIMES 2
- /* I2C communication timeout */
- #define I2C_SHORT_TIMEOUT 10000
- #define I2C_LONG_TIMEOUT ((ULONG)I2C_SHORT_TIMEOUT * 6)
- #define I2C_DMA_TIMEOUT 100000L
- /************************************************************************
- System Parameters
- *************************************************************************/
- /*Reserve Para*/
- #define I2CReserve \
- { \
- 500, 500, 0, 0, 0 \
- }
- /* Motor Para */
- #define I2CuwPolePairs \
- { \
- ((UWORD)M_POLE_PAIRS), 0, 0, 0, 0 \
- }
- #define I2CuwRsmOhm \
- { \
- ((UWORD)M_RS_OHM), 0, 0, 0, 0 \
- }
- #define I2CuwLduH \
- { \
- ((UWORD)M_LD_NOLOAD_MH), 0, 0, 0, 0 \
- }
- #define I2CuwLquH \
- { \
- ((UWORD)M_LQ_NOLOAD_MH), 0, 0, 0, 0 \
- }
- #define I2CuwFluxmWb \
- { \
- ((UWORD)M_FLUX_WB), 0, 0, 0, 0 \
- }
- #define I2CuwIdMaxA \
- { \
- ((UWORD)M_ID_MAX_AP), 0, 0, 0, 0 \
- }
- #define I2CuwIdMinA \
- { \
- ((UWORD)M_ID_MIN_AP), 0, 0, 0, 0 \
- }
- #define I2CuwRSpdRpm \
- { \
- ((UWORD)M_R_SPD_RPM), 0, 0, 0, 0 \
- }
- #define I2CuwRPwrWt \
- { \
- ((UWORD)M_R_PWR_WT), 0, 0, 0, 0 \
- }
- #define I2CuwRCurA \
- { \
- ((UWORD)M_R_IRMS_A), 0, 0, 0, 0 \
- }
- #define I2CuwRVolV \
- { \
- ((UWORD)M_R_UDC_v), 0, 0, 0, 0 \
- }
- #define I2CuwJD \
- { \
- ((UWORD)M_JD), 0, 0, 0, 0 \
- }
- #define I2CuwTorMaxNm \
- { \
- ((UWORD)M_MAX_TOR_NM), 0, 0, 0, 0 \
- }
- #define I2CMotorPara \
- { \
- I2CuwPolePairs, I2CuwRsmOhm, I2CuwLduH, I2CuwLquH, I2CuwFluxmWb, I2CuwIdMaxA, I2CuwIdMinA, I2CuwRSpdRpm, I2CuwRPwrWt, I2CuwRCurA, \
- I2CuwRVolV, I2CuwJD, I2CuwTorMaxNm, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
- }
- /* Bike Para */
- #define I2CuwWheelDiameter \
- { \
- ((UWORD)BIKE_WHEEL_PERIMETER), 0, 0, 0, 0 \
- }
- #define I2CuwMechRationMotor \
- { \
- ((UWORD)BIKE_MECH_RATION), 0, 0, 0, 0 \
- }
- #define I2CuwAssistMaxSpdKmH \
- { \
- ((UWORD)BIKE_SPEED_IQLIMIT_THRESHOLD1), 0, 0, 0, 0 \
- }
- #define I2CuwThrottleMaxSpdKmH \
- { \
- ((UWORD)BIKE_SPEED_THROTTLE_MAX), 0, 0, 0, 0 \
- }
- #define I2CuwNmFrontChainring \
- { \
- BIKE_FRONTTEETH_NMB, 0, 0, 0, 0 \
- }
- #define I2CuwNmBackChainring \
- { \
- BIKE_BACKTEETH_NMB, 0, 0, 0, 0 \
- }
- #define I2CuwAssistSelect1 \
- { \
- ((UWORD)BIKE_ASSIST_MODE1), 0, 0, 0, 0 \
- }
- #define I2CuwAssistSelect2 \
- { \
- ((UWORD)BIKE_ASSIST_MODE2), 0, 0, 0, 0 \
- }
- #define I2CuwLightVoltage \
- { \
- ((UWORD)BIKE_LIGHT_VOLTAGE), 0, 0, 0, 0 \
- }
- #define I2CuwDeltDiameter \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwStartMode \
- { \
- ((UWORD)BIKE_START_MODE), 0, 0, 0, 0 \
- }
- #define I2CuwAutoPowerOffTime \
- { \
- ((UWORD)BIKE_AUTO_POWER_OFF_TIME), 0, 0, 0, 0 \
- }
- #define I2CBikePara \
- { \
- I2CuwWheelDiameter, I2CuwMechRationMotor, I2CuwAssistMaxSpdKmH, I2CuwThrottleMaxSpdKmH, I2CuwNmFrontChainring, I2CuwNmBackChainring, \
- I2CuwAssistSelect1, I2CuwAssistSelect2, I2CuwLightVoltage, I2CuwDeltDiameter, I2CuwStartMode, I2CuwAutoPowerOffTime, I2CReserve \
- }
- /* MControl Para */
- #define I2CParaFirstSetFlg \
- { \
- 1, 0, 0, 0, 0 \
- }
- #define I2CSpiOffsetFirstSetFlg \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswSPIPosOffsetOrigin \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswSPIPosOffsetNow \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwIPeakMaxA \
- { \
- ((UWORD)M_IS_PEAK_MAX_AP), 0, 0, 0, 0 \
- }
- #define I2CuwAlamOCurA \
- { \
- ((UWORD)ALM_OVR_CNT_VAL), 0, 0, 0, 0 \
- }
- #define I2CuwAlamOVolV \
- { \
- ((UWORD)ALM_OVR_VLT_LVL3_VAL), 0, 0, 0, 0 \
- }
- #define I2CuwAlamUVolV \
- { \
- ((UWORD)ALM_UNDR_VLT_LVL2_VAL), 0, 0, 0, 0 \
- }
- #define I2CuwAlamOverSpdRpm \
- { \
- ((UWORD)ALM_OVR_SPD_VAL), 0, 0, 0, 0 \
- }
- #define I2CuwAlamOverHeatCe \
- { \
- ((UWORD)ALM_IPM_OVR_HEAT_VAL), 0, 0, 0, 0 \
- }
- #define I2CuwAlamRecHeatCe \
- { \
- ((UWORD)ALM_IPM_OVR_HEAT_REC_VAL), 0, 0, 0, 0 \
- }
- #define I2CuwPwrLimitStartCe \
- { \
- ((UWORD)PWRLIM_START_THRESHOLD_TEMP), 0, 0, 0, 0 \
- }
- #define I2CMControlPara \
- { \
- I2CParaFirstSetFlg,I2CSpiOffsetFirstSetFlg,I2CswSPIPosOffsetOrigin, I2CswSPIPosOffsetNow, I2CuwIPeakMaxA, I2CuwAlamOCurA, I2CuwAlamOVolV, I2CuwAlamUVolV, I2CuwAlamOverSpdRpm, \
- I2CuwAlamOverHeatCe, I2CuwAlamRecHeatCe, I2CuwPwrLimitStartCe, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
- }
- /* Sensor Para */
- #define I2CuwTorSensorOffsetOrigin \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTorSensorOffsetNow1 \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTorSensorOffsetNow2 \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTorSensorOffsetNow3 \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTorSensorOffsetNow4 \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTorMaxNm \
- { \
- 850, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor1StepRealNm \
- { \
- 0x07, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor1StepADC \
- { \
- 0x08, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor2StepRealNm \
- { \
- 0x09, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor2StepADC \
- { \
- 0x0A, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor3StepRealNm \
- { \
- 0x0B, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor3StepADC \
- { \
- 0x0C, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor4StepRealNm \
- { \
- 0x0D, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor4StepADC \
- { \
- 0x10, 0, 0, 0, 0 \
- }
- #define I2CuwCadSensorPulseNm \
- { \
- CADENCE_NUMBERS_PULSES, 0, 0, 0, 0 \
- }
- #define I2CuwBikeSpdSensorPulseNm \
- { \
- BIKESPEED_NUMBERS_PULSES, 0, 0, 0, 0 \
- }
- #define I2CSensorPara \
- { \
- I2CuwTorSensorOffsetOrigin, I2CuwTorSensorOffsetNow1, I2CuwTorSensorOffsetNow2, I2CuwTorSensorOffsetNow3, I2CuwTorSensorOffsetNow4, \
- I2CuwBikeTorMaxNm, I2CuwBikeTor1StepRealNm, I2CuwBikeTor1StepADC, I2CuwBikeTor2StepRealNm, I2CuwBikeTor2StepADC, \
- I2CuwBikeTor3StepRealNm, I2CuwBikeTor3StepADC, I2CuwBikeTor4StepRealNm, I2CuwBikeTor4StepADC, I2CuwCadSensorPulseNm, \
- I2CuwBikeSpdSensorPulseNm, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
- }
- /* Assist Para */
- #define I2CswStartupGain \
- { \
- 4096, 0, 0, 0, 0 \
- }
- #define I2CswStartcruiseGain \
- { \
- 4096, 0, 0, 0, 0 \
- }
- #define I2CswNmAssistChangeNum \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG1AssistCoefaH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG1AssistCoefaL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG1AssistCoefbH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG1AssistCoefbL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG1AssistCoefcH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG1AssistCoefcL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG2AssistCoefaH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG2AssistCoefaL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG2AssistCoefbH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG2AssistCoefbL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG2AssistCoefcH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG2AssistCoefcL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG3AssistCoefaH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG3AssistCoefaL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG3AssistCoefbH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG3AssistCoefbL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG3AssistCoefcH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG3AssistCoefcL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG4AssistCoefaH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG4AssistCoefaL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG4AssistCoefbH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG4AssistCoefbL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG4AssistCoefcH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG4AssistCoefcL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG5AssistCoefaH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG5AssistCoefaL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG5AssistCoefbH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG5AssistCoefbL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG5AssistCoefcH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswG5AssistCoefcL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswCadAssistCoefa \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswCadAssistCoefb \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CswCadAssistCoefc \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAssistStartNm \
- { \
- TORQUE_START_THRESHOLD, 0, 0, 0, 0 \
- }
- #define I2CuwAssistStopNm \
- { \
- TORQUE_STOP_THRESHOLD, 0, 0, 0, 0 \
- }
- #define I2CuwStartUpGainStep \
- { \
- 10, 0, 0, 0, 0 \
- }
- #define I2CuwStartUpCadNm \
- { \
- 32, 0, 0, 0, 0 \
- }
- #define I2CuwTorLPFCadNm \
- { \
- 63, 0, 0, 0, 0 \
- }
- #define I2CuwSpeedAssistSpdRpm \
- { \
- BIKE_SPD_MOTOR_CONSTANT_COMMAND, 0, 0, 0, 0 \
- }
- #define I2CuwSpeedAssistIMaxA \
- { \
- BIKE_SPD_MOTOR_CURRENT_MAX, 0, 0, 0, 0 \
- }
- #define I2CuwAssistLimitBikeSpdStart \
- { \
- BIKE_SPEED_IQLIMIT_THRESHOLD1, 0, 0, 0, 0 \
- }
- #define I2CuwAssistLimitBikeSpdStop \
- { \
- BIKE_SPEED_IQLIMIT_THRESHOLD2, 0, 0, 0, 0 \
- }
- #define I2CuwCadenceAssistWeight \
- { \
- 1229, 0, 0, 0, 0 \
- }
- #define I2CAssistPara \
- { \
- I2CswStartupGain, I2CswStartcruiseGain, I2CuwAssistStartNm, I2CuwAssistStopNm, I2CuwStartUpGainStep, I2CuwStartUpCadNm, I2CuwTorLPFCadNm, \
- I2CuwSpeedAssistSpdRpm, I2CuwSpeedAssistIMaxA, I2CuwAssistLimitBikeSpdStart, I2CuwAssistLimitBikeSpdStop, I2CuwCadenceAssistWeight, \
- I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
- }
- /* History Para */
- #define I2CuwAssModSelect \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwOpenTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwUsedTimeH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwUsedTimeL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwNTCTempMaxCe \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwNTCTempMinCe \
- { \
- 100, 0, 0, 0, 0 \
- }
- #define I2CuwAlamHOcurTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAlamSOcurTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAlamOHeatTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAlamRotorLockTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAlamPhsLossTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAlamOVolTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAlamUVolTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwAlamComOTimeTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwG1AvgPwrConsumption \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwG2AvgPwrConsumption \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwG3AvgPwrConsumption \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwG4AvgPwrConsumption \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwG5AvgPwrConsumption \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwODOTripH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwODOTripL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwODOTimeH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwODOTimeL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTripSumH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTripSumL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTripSumTimeH \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTripSumTimeL \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwTorSensorAlamTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwCadSensorAlamTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwBikeSpdSensorAlamTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CuwPosSensorAlamTimes \
- { \
- 0, 0, 0, 0, 0 \
- }
- #define I2CHistoryPara \
- { \
- I2CuwAssModSelect, I2CuwOpenTimes, I2CuwUsedTimeH, I2CuwUsedTimeL, I2CuwNTCTempMaxCe, I2CuwNTCTempMinCe, I2CuwAlamHOcurTimes, \
- I2CuwAlamSOcurTimes, I2CuwAlamOHeatTimes, I2CuwAlamRotorLockTimes, I2CuwAlamPhsLossTimes, I2CuwAlamOVolTimes, I2CuwAlamUVolTimes, \
- I2CuwAlamComOTimeTimes, I2CuwG1AvgPwrConsumption, I2CuwG2AvgPwrConsumption, I2CuwG3AvgPwrConsumption, I2CuwG4AvgPwrConsumption, \
- I2CuwG5AvgPwrConsumption, I2CuwODOTripH, I2CuwODOTripL, I2CuwODOTimeH, I2CuwODOTimeL, I2CuwTripSumH, I2CuwTripSumL, I2CuwTripSumTimeH, \
- I2CuwTripSumTimeL, I2CuwTorSensorAlamTimes, I2CuwCadSensorAlamTimes, I2CuwBikeSpdSensorAlamTimes, I2CuwPosSensorAlamTimes, I2CReserve, \
- I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve, I2CReserve \
- }
- /* System Para */
- #define SYSPARA2 \
- { \
- I2CMotorPara, I2CBikePara, I2CMControlPara, I2CSensorPara, I2CAssistPara, I2CHistoryPara \
- }
- /************************************************************************
- TypeDefs & Structure defines (N/A)
- *************************************************************************/
- typedef enum {
- I2C_START = 0,
- I2C_SEND_ADDRESS,
- I2C_CLEAR_ADDRESS_FLAG,
- I2C_TRANSMIT_DATA,
- I2C_STOP,
- } i2c_process_enum;
- typedef struct
- {
- UBYTE ubTX1NPages;
- UBYTE ubTX1NSingleBytes;
- } I2C_TX_COF;
- typedef struct
- {
- BOOL blTX1FinishFlg;
- BOOL blTX2FinishFlg;
- } I2C_TX_OUT;
- typedef struct
- {
- BOOL blMotorParaFltFlg;
- BOOL blBikeParaFltFlg;
- BOOL blMControlParaFltFlg;
- BOOL blSensorParaFltFlg;
- BOOL blAssistParaFltFlg;
- BOOL blHistoryParaFltFlg;
- BOOL ReadFinishFlg;
-
- UBYTE ubRdCnt;
- } I2C_RXCRC_OUT;
- typedef struct
- {
- UWORD uwDefault1;
- UWORD uwReal;
- UWORD uwMin;
- UWORD uwMax;
- UWORD uwUnit;
- } UWORD_VALUE;
- typedef struct
- {
- SWORD swDefault1;
- SWORD swReal;
- SWORD swMin;
- SWORD swMax;
- UWORD uwUnit;
- } SWORD_VALUE;
- typedef struct
- {
- UWORD_VALUE uwPolePairs;
- UWORD_VALUE uwRsmOhm;
- UWORD_VALUE uwLduH;
- UWORD_VALUE uwLquH;
- UWORD_VALUE uwFluxmWb;
- UWORD_VALUE uwIdMaxA;
- UWORD_VALUE uwIdMinA;
- UWORD_VALUE uwRSpdRpm;
- UWORD_VALUE uwRPwrWt;
- UWORD_VALUE uwRCurA;
- UWORD_VALUE uwRVolV;
- UWORD_VALUE uwJD;
- UWORD_VALUE uwTorMaxNm;
- UWORD_VALUE reserve1;
- UWORD_VALUE reserve2;
- UWORD_VALUE reserve3;
- UWORD_VALUE reserve4;
- UWORD_VALUE reserve5;
- UWORD_VALUE reserve6;
- } MOTOR_PARAMETER;
- typedef struct
- {
- UWORD_VALUE uwWheelPerimeter;
- UWORD_VALUE uwMechRationMotor;
- UWORD_VALUE uwAssistMaxSpdKmH;
- UWORD_VALUE uwThrottleMaxSpdKmH;
- UWORD_VALUE uwNmFrontChainring;
- UWORD_VALUE uwNmBackChainring;
- UWORD_VALUE uwAssistSelect1;
- UWORD_VALUE uwAssistSelect2;
- UWORD_VALUE uwLightVoltage;
- SWORD_VALUE swDeltPerimeter;
- UWORD_VALUE uwStartMode;
- UWORD_VALUE uwAutoPowerOffTime;
- UWORD_VALUE reserve1;
- } BIKE_PARAMETER;
- typedef struct
- {
- UWORD_VALUE ParaFirstSetFlg;
- UWORD_VALUE SpiOffsetFirstSetFlg;
-
- UWORD_VALUE uwSPIPosOffsetOrigin;
- UWORD_VALUE uwSPIPosOffsetNow;
- UWORD_VALUE uwIPeakMaxA;
- UWORD_VALUE uwAlamOCurA;
- UWORD_VALUE uwAlamOVolV;
- UWORD_VALUE uwAlamUVolV;
- UWORD_VALUE uwAlamOverSpdRpm;
- UWORD_VALUE uwAlamOverHeatCe;
- UWORD_VALUE uwAlamRecHeatCe;
- UWORD_VALUE uwPwrLimitStartCe;
- UWORD_VALUE reserve1;
- UWORD_VALUE reserve2;
- UWORD_VALUE reserve3;
- UWORD_VALUE reserve4;
- UWORD_VALUE reserve5;
- UWORD_VALUE reserve6;
- } MControl_PARAMETER;
- typedef struct
- {
- UWORD_VALUE uwTorSensorOffsetOrigin;
- UWORD_VALUE uwTorSensorOffsetNow1;
- UWORD_VALUE uwTorSensorOffsetNow2;
- UWORD_VALUE uwTorSensorOffsetNow3;
- UWORD_VALUE uwTorSensorOffsetNow4;
- UWORD_VALUE uwBikeTorMaxNm;
- UWORD_VALUE uwBikeTor1StepRealNm;
- UWORD_VALUE uwBikeTor1StepADC;
- UWORD_VALUE uwBikeTor2StepRealNm;
- UWORD_VALUE uwBikeTor2StepADC;
- UWORD_VALUE uwBikeTor3StepRealNm;
- UWORD_VALUE uwBikeTor3StepADC;
- UWORD_VALUE uwBikeTor4StepRealNm;
- UWORD_VALUE uwBikeTor4StepADC;
- UWORD_VALUE uwCadSensorPulseNm;
- UWORD_VALUE uwBikeSpdSensorPulseNm;
- UWORD_VALUE reserve1;
- UWORD_VALUE reserve2;
- UWORD_VALUE reserve3;
- UWORD_VALUE reserve4;
- } Sensor_PARAMETER;
- typedef struct
- {
- UWORD_VALUE uwStartupGain;
- UWORD_VALUE uwStartcruiseGain;
- UWORD_VALUE uwAssistStartNm;
- UWORD_VALUE uwAssistStopNm;
- UWORD_VALUE uwStartUpGainStep;
- UWORD_VALUE uwStartUpCadNm;
- UWORD_VALUE uwTorLPFCadNm;
- UWORD_VALUE uwSpeedAssistSpdRpm;
- UWORD_VALUE uwSpeedAssistIMaxA;
- UWORD_VALUE uwAssistLimitBikeSpdStart;
- UWORD_VALUE uwAssistLimitBikeSpdStop;
- UWORD_VALUE uwCadenceAssistWeight;
- UWORD_VALUE reserve1;
- UWORD_VALUE reserve2;
- UWORD_VALUE reserve3;
- UWORD_VALUE reserve4;
- UWORD_VALUE reserve5;
- UWORD_VALUE reserve6;
- UWORD_VALUE reserve7;
- UWORD_VALUE reserve8;
- } Assist_PARAMETER;
- typedef struct
- {
- UWORD_VALUE uwAssModSelect;
- UWORD_VALUE uwOpenTimes;
- UWORD_VALUE uwUsedTimeH;
- UWORD_VALUE uwUsedTimeL;
- UWORD_VALUE uwNTCTempMaxCe;
- UWORD_VALUE uwNTCTempMinCe;
- UWORD_VALUE uwAlamHOcurTimes;
- UWORD_VALUE uwAlamSOcurTimes;
- UWORD_VALUE uwAlamOHeatTimes;
- UWORD_VALUE uwAlamRotorLockTimes;
- UWORD_VALUE uwAlamPhsLossTimes;
- UWORD_VALUE uwAlamOVolTimes;
- UWORD_VALUE uwAlamUVolTimes;
- UWORD_VALUE uwAlamComOTimeTimes;
- UWORD_VALUE uwG1AvgPwrConsumption;
- UWORD_VALUE uwG2AvgPwrConsumption;
- UWORD_VALUE uwG3AvgPwrConsumption;
- UWORD_VALUE uwG4AvgPwrConsumption;
- UWORD_VALUE uwG5AvgPwrConsumption;
- UWORD_VALUE uwODOTripH;
- UWORD_VALUE uwODOTripL;
- UWORD_VALUE uwODOTimeH;
- UWORD_VALUE uwODOTimeL;
- UWORD_VALUE uwTripSumH;
- UWORD_VALUE uwTripSumL;
- UWORD_VALUE uwTripSumTimeH;
- UWORD_VALUE uwTripSumTimeL;
- UWORD_VALUE uwTorSensorAlamTimes;
- UWORD_VALUE uwCadSensorAlamTimes;
- UWORD_VALUE uwBikeSpdSensorAlamTimes;
- UWORD_VALUE uwPosSensorAlamTimes;
- UWORD_VALUE reserve1;
- UWORD_VALUE reserve2;
- UWORD_VALUE reserve3;
- UWORD_VALUE reserve4;
- UWORD_VALUE reserve5;
- UWORD_VALUE reserve6;
- UWORD_VALUE reserve7;
- UWORD_VALUE reserve8;
- } History_PARAMETER;
- typedef struct
- {
- MOTOR_PARAMETER stMotorPara;
- BIKE_PARAMETER stBikePara;
- MControl_PARAMETER stMControlPara;
- Sensor_PARAMETER stSensorPara;
- Assist_PARAMETER stAssistPara;
- History_PARAMETER stHistoryPara;
- } SYSTEM_PARAMETER2;
- /************************************************************************
- Constant Table
- *************************************************************************/
- /************************************************************************
- Exported Variables
- *************************************************************************/
- #ifdef _I2C_MASTER_C_
- _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2 = SYSPARA2;
- _I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
- _I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
- _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut = {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE};
- _I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RX_TIMES][I2C1_RX_DMA_NUM];
- _I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
- _I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
- _I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
- _I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer = I2C_ubWriteBuffer;
- _I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer = I2C_ubHistoyWriteBuffer;
- _I2C_MASTER_EXT UBYTE *I2C_pReadBuffer = I2C_ubReadBuffer[0];
- _I2C_MASTER_EXT BOOL I2C_EE_ComuFltFlg = FALSE;
- #else
- _I2C_MASTER_EXT SYSTEM_PARAMETER2 Syspara2;
- _I2C_MASTER_EXT I2C_TX_COF i2c_stTXCoef;
- _I2C_MASTER_EXT I2C_TX_OUT i2c_stTXOut;
- _I2C_MASTER_EXT I2C_RXCRC_OUT i2c_stRXCRCOut;
- _I2C_MASTER_EXT UBYTE I2C_ubReadBuffer[I2C_RX_TIMES][I2C1_RX_DMA_NUM];
- _I2C_MASTER_EXT UWORD I2C_uwMotorParaRead[I2C_MOTOR_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwBikeParaRead[I2C_BIKE_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwMControlRead[I2C_MCONTROL_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwSensorRead[I2C_SENSOR_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwAssistParaRead[I2C_ASSIST_PARA_N_WORDS];
- _I2C_MASTER_EXT UWORD I2C_uwHistoryParaRead[I2C_HISTORY_PARA_N_WORDS];
- _I2C_MASTER_EXT UBYTE I2C_ubWriteBuffer[I2C_TX1_NBYTES];
- _I2C_MASTER_EXT UBYTE I2C_ubHistoyWriteBuffer[I2C_TX2_NBYTES];
- _I2C_MASTER_EXT UBYTE *I2C_pWriteBuffer;
- _I2C_MASTER_EXT UBYTE *I2C_pHistoryWriteBuffer;
- _I2C_MASTER_EXT UBYTE *I2C_pReadBuffer;
- _I2C_MASTER_EXT BOOL I2C_EE_ComuFltFlg;
- #endif
- /************************************************************************
- Exported Function Call Prototypes
- *************************************************************************/
- #ifdef _I2C_MASTER_C_
- _I2C_MASTER_EXT void i2c_voReadTest(void);
- _I2C_MASTER_EXT void i2c_voWriteTest(void);
- _I2C_MASTER_EXT void i2c_voWaitEEReady(UBYTE SlaveAddr);
- _I2C_MASTER_EXT void i2c_voTXCoef(I2C_TX_COF *out);
- _I2C_MASTER_EXT void i2c_voInfoWriteBuffer(void);
- _I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
- _I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
- _I2C_MASTER_EXT void i2c_voDefaultWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voHistoryWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voPageWrite2EE(UBYTE *pBuffer, UBYTE SlaveAddr, UBYTE WriteAddr, UBYTE NBytesToWrite);
- _I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(UBYTE *ptubBuf, UWORD length);
- _I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT void i2c_bus_reset(void);
- #else
- _I2C_MASTER_EXT void i2c_voReadTest(void);
- _I2C_MASTER_EXT void i2c_voWriteTest(void);
- _I2C_MASTER_EXT void i2c_voWaitEEReady(UBYTE SlaveAddr);
- _I2C_MASTER_EXT void i2c_voTXCoef(I2C_TX_COF *out);
- _I2C_MASTER_EXT void i2c_voDefaultWriteBuffer(void);
- _I2C_MASTER_EXT void i2c_voParaWriteBuffer(void);
- _I2C_MASTER_EXT void i2c_voHistoryWriteBuffer(void);
- _I2C_MASTER_EXT void i2c_voInfoWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voHistoryWrite2EE(I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voPageWrite2EE(UBYTE *pBuffer, UBYTE SlaveAddr, UBYTE WriteAddr, UBYTE NBytesToWrite);
- _I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(UBYTE *ptubBuf, UWORD length);
- _I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT void i2c_bus_reset(void);
- #endif
- /************************************************************************
- Flag Define (N/A)
- *************************************************************************/
- #endif
- /************************************************************************
- Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
- All rights reserved.
- *************************************************************************
- End of this File (EOF)!
- Do not put anything after this part!
- *************************************************************************/
|