12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040 |
- /************************************************************************
- 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 I2CuwWheelPerimeter \
- { \
- ((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 \
- { \
- I2CuwWheelPerimeter, 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 \
- { \
- 250, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor1StepADC \
- { \
- 1427, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor2StepRealNm \
- { \
- 500, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor2StepADC \
- { \
- 1985, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor3StepRealNm \
- { \
- 750, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor3StepADC \
- { \
- 2544, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor4StepRealNm \
- { \
- 1000, 0, 0, 0, 0 \
- }
- #define I2CuwBikeTor4StepADC \
- { \
- 3103, 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 \
- { \
- 20, 0, 0, 0, 0 \
- }
- #define I2CuwStartUpCadNm \
- { \
- 700, 0, 0, 0, 0 \
- }
- #define I2CuwTorLPFCadNm \
- { \
- 64, 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 \
- { \
- 50, 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_voDefaultWriteBuffer(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_voInfoWrite2EE(const I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voHistoryWrite2EE(const I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voPageWrite2EE(const UBYTE *pBuffer, UBYTE SlaveAddr, UBYTE WriteAddr, UBYTE NBytesToWrite);
- _I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(const UBYTE *ptubBuf, UWORD length);
- _I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(const 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(const I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voHistoryWrite2EE(const I2C_TX_COF *coef, I2C_TX_OUT *out);
- _I2C_MASTER_EXT void i2c_voPageWrite2EE(const UBYTE *pBuffer, UBYTE SlaveAddr, UBYTE WriteAddr, UBYTE NBytesToWrite);
- _I2C_MASTER_EXT void i2c_voSysparaReadFromEE(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT UWORD i2c_uwCRCCcitt(const UBYTE *ptubBuf, UWORD length);
- _I2C_MASTER_EXT void i2c_voReadBufferCRC(I2C_RXCRC_OUT *out);
- _I2C_MASTER_EXT void i2c_voGetValueFrmBuffer(const 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!
- *************************************************************************/
|