主题:[求助]ES9281怎样控制44和46脚输出高电平或低电平 共有53134人关注过本帖 |
---|
客人 |
1楼 |
![]() |
[求助]ES9281怎样控制44和46脚输出高电平或低电平 ![]()
我在wince开发,使用C#,44和46现在使用的是MOSI和SCLK功能,我现在想用代码控制输出高电平或低电平。请问怎么实现?
|
单帖管理 | 引用 | 回复 ![]() |
![]() yy |
2楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() 如果你使用这两个引脚做SPI,那么你不需要了解如何控制MOSI和SCLK的电平,我们的SPI驱动已经实现好了,只需要参考我们的SPI例程看看如何操作SPI就行了。 如果你只是要控制这两个引脚电平,参考文档,44,46分别是GPIO9,GPIO10,参考GPIO例程就可以控制这两个GPIO脚了。 44,46这两个脚是SPI和GPIO复用的,做SPI用的时候就不能做GPIO用,做GPIO的时候就不能做SPI用。
|
单帖管理 | 引用 | 回复 ![]() |
客人 |
3楼 |
![]() |
![]()
我就是参考例程,但还是不能控制。
这是我写的,麻烦帮我看下是哪里没有对 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楼 |
![]() |
![]()
在SPI_CSn无效时,SPI_MOSI应当是没有意义。你是为什么需要让SPI_MOSI始终输出为低?因为在上电时SPI_MOSI还是GPIO输入模式,且上拉为高,所以不能完全做到MOSI始终为低。
|
单帖管理 | 引用 | 回复 ![]() |