主題:[求助]ES9281怎樣控制44和46腳輸出高電平或低電平 共有43088人關注過本帖 |
---|
客人 |
1樓 |
[求助]ES9281怎樣控制44和46腳輸出高電平或低電平 Post By:2016-5-30 12:32:00 [只看該作者]
我在wince開發,使用C#,44和46現在使用的是MOSI和SCLK功能,我現在想用代碼控制輸出高電平或低電平。請問怎么實現?
|
|
單帖管理 | 引用 | 回復 |
yy |
2樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2016-5-30 14:40:00 [只看該作者]
如果你使用這兩個引腳做SPI,那么你不需要了解如何控制MOSI和SCLK的電平,我們的SPI驅動已經實現好了,只需要參考我們的SPI例程看看如何操作SPI就行了。 如果你只是要控制這兩個引腳電平,參考文檔,44,46分別是GPIO9,GPIO10,參考GPIO例程就可以控制這兩個GPIO腳了。 44,46這兩個腳是SPI和GPIO復用的,做SPI用的時候就不能做GPIO用,做GPIO的時候就不能做SPI用。
|
單帖管理 | 引用 | 回復 |
客人 |
3樓 |
Post By:2016-5-30 15:42:00 [只看該作者]
我就是參考例程,但還是不能控制。
這是我寫的,麻煩幫我看下是哪里沒有對 private int _hSPI; // I2C設備操作號 BAL.SPI_INFO sSPI; private int _sizeSPI = Marshal.SizeOf(typeof(BAL.SPI_INFO)); //16 private IntPtr _pSPIinfo = Marshal.AllocHGlobal(8); sSPI = new BAL.SPI_INFO(); // I2C設備操作數據 sSPI.BitCount = 8; sSPI.pDatBuf = _pSPIinfo; sSPI.dwDatLen = 1; sSPI.bLockCS = 0; _hSPI = BAL.SPI.SPIOpen(); if (0 == _hSPI) { return false; } BAL.SPI.SPISetBandRate(_hSPI, 1000000); uint uLen = 0; byte[] TxBuffer = new byte[8]; TxBuffer[0] = 0x00; TxBuffer[1] = 0x00; TxBuffer[2] = 0x00; TxBuffer[3] = 0x00; TxBuffer[4] = 0x00; TxBuffer[5] = 0x00; TxBuffer[6] = 0x00; TxBuffer[7] = 0x00; Marshal.Copy(TxBuffer, 0, _pSPIinfo, 8); bool bRes = BAL.SPI.WriteFile(_hSPI, ref sSPI, _sizeSPI, ref uLen, 0); if (bRes) { return false; } 參數是這樣設的 spiinit.eMode = SSP_MODE_SPI; spiinit.eLength = SSP_WORD_LENGTH_8BITS; //下面的0表示FALSE 1表示TRUE spiinit.bDmaEnable = 0; // 0: dma disabled, 1: dma enabled spiinit.b_ceata_ccs_err_en = 0; // CEATA Unexpected CCS Error logic enable. 0: disabled, 1: enabled spiinit.bPhase = 0; // SPI, MemStick, and SD modes spiinit.bPolarity = 1; // SPI, MemStick, and SD modes spiinit.bSlave = 0; // 0: SSP is Master, 1: SSP is Slave spiinit.bIgnoreCrc = 0; // Ignore the response CRC spiinit.bBusWidth4 = 0; // 0: 1-bit bus, 1: 4 bit bus spiinit.bWaitIrq = 0; spiinit.bLongResp = 0; // Get long response from device spiinit.bCheckResp = 0; // Check Response against reference to insure integrity of response spiinit.bGetResp = 0; // wait for a response spiinit.u16TransferCount = 0; spiinit.bEnable = 0; // Command Transmit Enable. spiinit.bWaitCmd = 0; // spiinit.bDataTransfr = 0; // Data Transfer Enable spiinit.bRead = 0; // Read Mode spiinit.bSlaveOutDisable = 0; // 0: SSP can drive MISO in slave mode, 1: SSP does not drive MISO spiinit.bHalfDuplex = 0; spiinit.bLockCs = 1; |
|
單帖管理 | 引用 | 回復 |
x10 |
4樓 |
Post By:2016-5-30 21:38:00 [只看該作者]
在SPI_CSn無效時,SPI_MOSI應當是沒有意義。你是為什么需要讓SPI_MOSI始終輸出為低?因為在上電時SPI_MOSI還是GPIO輸入模式,且上拉為高,所以不能完全做到MOSI始終為低。
|
|
單帖管理 | 引用 | 回復 |