|
@@ -0,0 +1,195 @@
|
|
|
+/**
|
|
|
+ ******************************************************************************
|
|
|
+ * @file uart_TORG4BBSensor.h
|
|
|
+ * @author
|
|
|
+ * @version V1.0.0
|
|
|
+ * @date 05-02-2025
|
|
|
+ * @brief TORG4BBSensor function.
|
|
|
+ ******************************************************************************
|
|
|
+ *
|
|
|
+ * COPYRIGHT(c) 2015 STMicroelectronics
|
|
|
+ *
|
|
|
+ * Redistribution and use in source and binary forms, with or without modification,
|
|
|
+ * are permitted provided that the following conditions are met:
|
|
|
+ * 1. Redistributions of source code must retain the above copyright notice,
|
|
|
+ * this list of conditions and the following disclaimer.
|
|
|
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
|
+ * this list of conditions and the following disclaimer in the documentation
|
|
|
+ * and/or other materials provided with the distribution.
|
|
|
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
|
|
|
+ * may be used to endorse or promote products derived from this software
|
|
|
+ * without specific prior written permission.
|
|
|
+ *
|
|
|
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
|
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
|
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
|
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
|
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
|
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+ *
|
|
|
+ ******************************************************************************
|
|
|
+ */
|
|
|
+/* Includes ------------------------------------------------------------------*/
|
|
|
+#include "uart_TORG4BBSensor.h"
|
|
|
+#include "FuncLayerAPI.h"
|
|
|
+#include "mathtool.h"
|
|
|
+#include "syspar.h"
|
|
|
+/******************************
|
|
|
+ *
|
|
|
+ * Parameter
|
|
|
+ *
|
|
|
+ ******************************/
|
|
|
+static LPF_OUT scm_stTORG4BBTorLpf;
|
|
|
+TORG4BBInfo_Struct_t stTORG4BBInfo;
|
|
|
+TORG4BB_OUT stTORG4BB_stTorSensorOut;
|
|
|
+/******************************
|
|
|
+ *
|
|
|
+ * Functions
|
|
|
+ *
|
|
|
+ ******************************/
|
|
|
+/***************************************************************
|
|
|
+ Function: TORG4BB_Init;
|
|
|
+ Description:Data Init
|
|
|
+ Call by:
|
|
|
+ Input Variables: N/A
|
|
|
+ Output/Return Variables: N/A
|
|
|
+ Subroutine Call: N/A;
|
|
|
+ Reference: N/A
|
|
|
+****************************************************************/
|
|
|
+void TORG4BB_Init(void)
|
|
|
+{
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorqueRegOffset = 217;//0.7/3.3*1024
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorqueReg2Pu = (((SQWORD)3300 << 14) >> 10) / 35 * 10 / TORQUEBASE;
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorqueLPFgain = TORG4BBCADENCE_LPF_GAIN;
|
|
|
+ stTORG4BB_stTorSensorOut.uwMaxTimeOutCnt = TORG4BBTORQUE_TIMEOUT_TIME / TORG4BBTORQUE_TIMEOUT_UNIT;
|
|
|
+
|
|
|
+ stTORG4BB_stTorSensorOut.uwTimeOutCnt = 0;
|
|
|
+ stTORG4BBInfo.uwTorqueReg = stTORG4BB_stTorSensorOut.uwTorqueRegOffset;
|
|
|
+
|
|
|
+ mth_voLPFilterCoef(1000000/2, 100, &scm_stTORG4BBTorLpf.uwKx);
|
|
|
+}
|
|
|
+/***************************************************************
|
|
|
+ Function: TORG4BB_USART_DataProcess;
|
|
|
+ Description:Get TORG4BBSensor Data
|
|
|
+ Call by:
|
|
|
+ Input Variables: N/A
|
|
|
+ Output/Return Variables: N/A
|
|
|
+ Subroutine Call: N/A;
|
|
|
+ Reference: N/A
|
|
|
+****************************************************************/
|
|
|
+void TORG4BB_USART_DataProcess(USART_Buf_TypeDef* ptUartTx, UBYTE* Data)
|
|
|
+{
|
|
|
+ stTORG4BBInfo.ucForwardCntLast = stTORG4BBInfo.ucForwardCnt;
|
|
|
+ stTORG4BBInfo.uwTorqueRegLast = stTORG4BBInfo.uwTorqueReg;
|
|
|
+
|
|
|
+ stTORG4BBInfo.ucTemp = ((Data[1]>>2) + 71);
|
|
|
+ stTORG4BBInfo.uwTorqueReg = (((Data[1] & 0x03)<<8) + Data[2]);
|
|
|
+ stTORG4BBInfo.ucForwardCnt = Data[3] & 0x7F;
|
|
|
+ stTORG4BBInfo.uwMotorSpeed = (((Data[4] & 0x7F)<<8) + Data[5]);
|
|
|
+}
|
|
|
+/***************************************************************
|
|
|
+ Function: TORG4BB_USART_RxData_Process;
|
|
|
+ Description: Get Uart Data following the protocol
|
|
|
+ Call by:
|
|
|
+ Input Variables: N/A
|
|
|
+ Output/Return Variables: N/A
|
|
|
+ Subroutine Call: N/A;
|
|
|
+ Reference: N/A
|
|
|
+****************************************************************/
|
|
|
+void TORG4BB_USART_RxData_Process(USART_Buf_TypeDef* ptUartTx, UBYTE* buf, UWORD dataCount)
|
|
|
+{
|
|
|
+ static UBYTE Data[255];
|
|
|
+ //UWORD Cmd, ID;
|
|
|
+ UWORD i;
|
|
|
+ UBYTE checksum = 0;
|
|
|
+
|
|
|
+ if(dataCount == 7)
|
|
|
+ {
|
|
|
+ if(buf[0] == 0xFF)//起始
|
|
|
+ {
|
|
|
+ for(i=0; i<(dataCount-1); i++)//数据
|
|
|
+ {
|
|
|
+ Data[i] = buf[i];
|
|
|
+ checksum += buf[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ if(checksum == buf[dataCount-1])// 校验和正常
|
|
|
+ {
|
|
|
+ TORG4BB_USART_DataProcess(ptUartTx, Data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+/***************************************************************
|
|
|
+ Function: TORG4BB_Torque_Handler;
|
|
|
+ Description: Get TORG4BB_Torque Data
|
|
|
+ Call by:
|
|
|
+ Input Variables: N/A
|
|
|
+ Output/Return Variables: N/A
|
|
|
+ Subroutine Call: N/A;
|
|
|
+ Reference: N/A
|
|
|
+****************************************************************/
|
|
|
+void TORG4BB_Torque_Handler(void)
|
|
|
+{
|
|
|
+ if(stTORG4BBInfo.uwTorqueReg < stTORG4BB_stTorSensorOut.uwTorqueRegOffset)
|
|
|
+ {
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorquePu = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorquePu = (stTORG4BBInfo.uwTorqueReg - stTORG4BB_stTorSensorOut.uwTorqueRegOffset) * stTORG4BB_stTorSensorOut.uwTorqueReg2Pu;
|
|
|
+ }
|
|
|
+
|
|
|
+ //通信超时,清除力矩
|
|
|
+ if(stTORG4BBInfo.uwTorqueRegLast == stTORG4BBInfo.uwTorqueReg)
|
|
|
+ {
|
|
|
+ if(stTORG4BB_stTorSensorOut.uwTimeOutCnt < stTORG4BB_stTorSensorOut.uwMaxTimeOutCnt)
|
|
|
+ {
|
|
|
+ stTORG4BB_stTorSensorOut.uwTimeOutCnt++;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorquePu = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ stTORG4BB_stTorSensorOut.uwTimeOutCnt = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ //mth_voLPFilter(stTORG4BB_stTorSensorOut.uwTorquePu, &scm_stTORG4BBTorLpf);
|
|
|
+ //stTORG4BB_stTorSensorOut.uwTorqueLPFPu = scm_stTORG4BBTorLpf.slY.sw.hi;
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorqueLPFPuLast = stTORG4BB_stTorSensorOut.uwTorqueLPFPu;
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorqueLPFPu = (stTORG4BB_stTorSensorOut.uwTorqueLPFPu * stTORG4BB_stTorSensorOut.uwTorqueLPFgain +
|
|
|
+ stTORG4BB_stTorSensorOut.uwTorquePu * (100 - stTORG4BB_stTorSensorOut.uwTorqueLPFgain)) /
|
|
|
+ 100;
|
|
|
+
|
|
|
+ torsensor_stTorSensorOut.uwTorqueReg = stTORG4BBInfo.uwTorqueReg;
|
|
|
+ torsensor_stTorSensorOut.uwTorquePu = stTORG4BB_stTorSensorOut.uwTorquePu;
|
|
|
+ torsensor_stTorSensorOut.uwTorqueLPFPu = stTORG4BB_stTorSensorOut.uwTorqueLPFPu;
|
|
|
+}
|
|
|
+/***************************************************************
|
|
|
+ Function: TORG4BB_Get_CAD_PORT;
|
|
|
+ Description: Get TORG4BB_Candance pulse timing
|
|
|
+ Call by:
|
|
|
+ Input Variables: N/A
|
|
|
+ Output/Return Variables: N/A
|
|
|
+ Subroutine Call: N/A;
|
|
|
+ Reference: N/A
|
|
|
+****************************************************************/
|
|
|
+uint32_t TORG4BB_Get_CAD_PORT(void)
|
|
|
+{
|
|
|
+ if((stTORG4BBInfo.ucForwardCnt > stTORG4BBInfo.ucForwardCntLast) || ((stTORG4BBInfo.ucForwardCnt == 1) && (stTORG4BBInfo.ucForwardCntLast == 127)))
|
|
|
+ {
|
|
|
+ return 0x0000;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return 0x0200;
|
|
|
+ }
|
|
|
+}
|
|
|
+/************************ (C) END OF FILE *********************************/
|