WM-g-rm-09的STM32读写代码
0赞
发表于 11/20/2013 2:56:09 PM
阅读(2835)
今天在网上买的WM-g-rm-09的芯片到货了
,设计的pcb板也回了
,准备焊接调试程序,悲催,WM-g-rm-09不好焊接,当初就想到这个问题,在网上找了些焊接方法,感觉,先镀锡,再一个腿的加锡应该可以,但是怕引脚没有对齐,pcb和底下接地的短路了。没有办法只有硬着头皮试下了。这是对寄存器WM-g-rm-09读写的驱动代码。由于工程太大了无法上传,只能上传一部分。
,设计的pcb板也回了int Hw_WriteRegister(int nRegNo, PVOID pBuf, int nSize)
{
PBYTE pCur, pEnd, pBufPos;
PBYTE aData = ucSpiBuf;
int nBufLen, nDmaLen, nResidue;
GSPI_CS_ENABLE(pSpi);
nResidue = nSize;
pBufPos = (PBYTE)pBuf;
#if (/*defined(SPI_USE_DMA) || */defined(GSPI_USE_8BIT))
aData[0] = HIBYTE(nRegNo) | 0x80;
aData[1] = LOBYTE(nRegNo);
#else // else for 16BIT
aData[1] = HIBYTE(nRegNo) | 0x80;
aData[0] = LOBYTE(nRegNo);
#endif
pCur = aData + 2;
while (nResidue > 0) {
pEnd = aData + HW_IODATA_SIZE;
nBufLen = pEnd - pCur;
if (nResidue < nBufLen) {
nBufLen = nResidue;
pEnd = pCur + nResidue;
}
while (pCur < pEnd) {
#if (/*defined(SPI_USE_DMA) || */defined(GSPI_USE_8BIT))
pCur[1] = *pBufPos ++;
pCur[0] = *pBufPos ++;
#else // else for 16BIT
pCur[0] = *pBufPos ++;
pCur[1] = *pBufPos ++;
#endif
pCur += 2;
}
nDmaLen = pEnd - aData;
if (Hw_Write(nDmaLen) != nDmaLen)
break;
nResidue -= nBufLen;
pCur = aData;
}
GSPI_CS_DISABLE(pSpi);
return nSize - nResidue;
}
int Hw_ReadRegister(int nRegNo, PVOID pBuf, int nSize)
{
PBYTE pCur,pEnd,pBufPos;
PBYTE aData = ucSpiBuf;
int nBufLen,nDmaLen,nResidue;
GSPI_CS_ENABLE(pSpi);
nResidue = nSize;
nDmaLen = (int)ucSpiDummyClk * 2 + 2;
FillMemory(aData, 0xFF, nDmaLen);
#if (/*defined(SPI_USE_DMA) || */defined(GSPI_USE_8BIT))
aData[0] = HIBYTE(nRegNo);
aData[1] = LOBYTE(nRegNo);
#else // else for 16BIT
aData[1] = HIBYTE(nRegNo);
aData[0] = LOBYTE(nRegNo);
#endif
if(Hw_Write(nDmaLen) == nDmaLen) {
pBufPos = (PBYTE)pBuf;
pCur = aData;
while(nResidue > 0) {
pEnd = aData + HW_IODATA_SIZE;
nBufLen = pEnd - pCur;
if(nResidue < nBufLen) {
nBufLen = nResidue;
pEnd = pCur + nResidue;
}
nDmaLen = pEnd - aData;
#ifndef GSPI_GPIO_MODE
if(Hw_Read(nDmaLen) != nDmaLen)
break;
#else
while (nDmaLen --)
*pCur ++ = (BYTE)GSPI_ReadByte(&Spi);
pCur = aData;
#endif
while(pCur < pEnd) {
#if (/*defined(SPI_USE_DMA) || */defined(GSPI_USE_8BIT))
*pBufPos ++ = pCur[1];
*pBufPos ++ = pCur[0];
#else // else for 16BIT
*pBufPos ++ = pCur[0];
*pBufPos ++ = pCur[1];
#endif
pCur += 2;
}
nResidue -= nBufLen;
pCur = aData;
}
}
GSPI_CS_DISABLE(pSpi);
return nSize;
}
