主题:[求助]ES9281怎样控制44和46脚输出高电平或低电平

  共有23120人关注过本帖    
客人
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始终为低。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

[求助]ES9281怎样控制44和46脚输出高电平或低电平

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: