现在设备地址存在两个,一个是0x1A,一个是0x1B,有什么方案可以去做应答位的检测吗?
您好,可参考如下blog:https://blog.csdn.net/WCH_TechGroup/article/details/130932558?
使用如下接口函数可实现:
BOOL WINAPI IIC_OutByteCheckAck( // 输出一字节数据并检查应答是否有效
ULONG iIndex, // 指定CH341设备序号
UCHAR iOutByte ) // 准备写出的数据
{
UCHAR mBuffer[ mCH341_PACKET_LENGTH ];
ULONG mLength, mInLen;
mBuffer[ 0 ] = mCH341A_CMD_I2C_STREAM; // 命令码
mBuffer[ 1 ] = mCH341A_CMD_I2C_STM_OUT; // 输出数据,位5-位0为长度,0长度则只发送一个字节并返回应答
mBuffer[ 2 ] = iOutByte; // 数据
mBuffer[ 3 ] = mCH341A_CMD_I2C_STM_END; // 当前包提前结束
mLength = 4;
mInLen = 0;
if ( CH341WriteRead( iIndex, mLength, mBuffer, mCH341A_CMD_I2C_STM_MAX, 1, &mInLen, mBuffer ) ) { // 执行数据流命令,先输出再输入
if ( mInLen && ( mBuffer[ mInLen - 1 ] & 0x80 ) == 0 ) return( TRUE ); // 返回的数据的位7代表ACK应答位,ACK=0有效
}
return( FALSE );