From 8dc807662aa4e4d616f876e24c731056658ec8b2 Mon Sep 17 00:00:00 2001 From: KWH Date: Fri, 1 Aug 2025 22:21:43 +0800 Subject: [PATCH] =?UTF-8?q?+)=20=E6=96=B0=E5=8A=A0=E5=AF=B9SPI=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=94=B9=E5=8A=A8=E7=9A=84=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/headers/drv_spi.h | 1 + src/sources/drv_spi.cpp | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/headers/drv_spi.h b/src/headers/drv_spi.h index 8dfd9b4..21dba09 100644 --- a/src/headers/drv_spi.h +++ b/src/headers/drv_spi.h @@ -58,6 +58,7 @@ public: bool spi_closeDevice(); // 关闭设备 bool spi_Write(QByteArray &sendData); // SPI写数据 BOOL spi_Read(QByteArray &revData); // SPI读数据 + bool spi_Init(int devIndex, int mode, int clock, int byteOrder, int CS1Pol, int CS2Pol, int dataBits); /*************变量定义*************/ mDRV_Spi_Infors m_DRV_Spi_Infors; //Spi驱动相关信息 diff --git a/src/sources/drv_spi.cpp b/src/sources/drv_spi.cpp index 4fe6cdb..18fdf77 100644 --- a/src/sources/drv_spi.cpp +++ b/src/sources/drv_spi.cpp @@ -79,7 +79,6 @@ bool DRV_Spi::spi_openDevice(ULONG SpiI2cGpioDevIndex) // 设置当前打开设备的索引号 this->m_DRV_Spi_Infors.opendDevIndex = SpiI2cGpioDevIndex; return true; -// CH347InitSpi(); } //关闭设备 @@ -113,7 +112,7 @@ bool DRV_Spi::spi_Write(QByteArray &sendData) // 调用底层串口发送函数发送数据 RetVal = CH347SPI_Write(this->m_DRV_Spi_Infors.opendDevIndex, SPI_WRITE_CS, OutLen, SPI_WRITE_BLOCK_SIZE, (UCHAR *)OutBuf); // 日志窗口输出调试信息 - DbgPrint("frame:%d,Spi_Write %dBytes %s.",sendData.at(14), OutLen,RetVal?"succ":"failure"); + DbgPrint("Spi_Write %dBytes %s.", OutLen,RetVal?"succ":"failure"); return RetVal; } @@ -139,3 +138,31 @@ BOOL DRV_Spi::spi_Read(QByteArray &revData) return RetVal; } +bool DRV_Spi::spi_Init(int devIndex, int mode, int clock, int byteOrder, int CS1Pol, int CS2Pol, int dataBits) { + mSpiCfgS spiCon; + BOOL rv = FALSE; + rv = CH347SPI_GetCfg(devIndex, &spiCon); + DbgPrint("CH347SPI_GetCfg %s.", rv ? "succ" : "failure"); + if (rv == FALSE) + return false; + spiCon.iMode = mode; + spiCon.iClock = clock; + spiCon.iByteOrder = byteOrder; + spiCon.iSpiOutDefaultData = 0xFF; + spiCon.iChipSelect = 0x80; + spiCon.CS1Polarity = CS1Pol; + spiCon.CS2Polarity = CS2Pol; + spiCon.iIsAutoDeativeCS = 0; + spiCon.iActiveDelay = 0; + spiCon.iDelayDeactive = 0; + rv = CH347SPI_Init(devIndex, &spiCon); + DbgPrint("CH347SPI_Init %s.", rv ? "succ" : "failure"); + if (rv == FALSE) + return false; + rv = CH347SPI_SetDataBits(devIndex, dataBits); + DbgPrint("CH347SPI_SetDataBits %s.", rv ? "succ" : "failure"); + if (rv == FALSE) + return false; + return true; +} +