/// <summary> /// I2C write function. /// </summary> /// <param name="writeNum">How many registers will you write to.</param> /// <param name="chipAddr_FuseDelay">Normally it is chip address. But when it is fuse mode, /// it become the delay of half cycle.</param> /// <param name="writeData">1.length is double of writeNum. 2.Formate:regAdd0,regVal0,regAdd1,regVal1...</param> /// <param name="SDPorAP">SDPorAP:true->SDP mode,false->AP mode.</param> /// <returns></returns> public bool Write(ADMP521T_MODE mode, uint writeNum, uint chipAddr_FuseDelay, uint[] writeData, bool SDPorAP) { if (writeNum == 0) return false; buffer_uint[0] = (uint)mode; buffer_uint[1] = writeNum; buffer_uint[2] = chipAddr_FuseDelay; buffer_uint[3] = Convert.ToUInt32(SDPorAP); //if(mode == ADMP521T_MODE.Fuse) // buffer_uint[2] = 100; if (2 * writeNum != writeData.Length) return false; for (int i = 0; i < writeNum; i++) { buffer_uint[4 + 2 * i] = writeData[2 * i]; buffer_uint[4 + 2 * i + 1] = writeData[2 * i + 1]; } return myDevice.UsbReportWrite(buffer_uint); }
/// <summary> /// Select which mode you will enter. /// </summary> /// <param name="mode"></param> /// <param name="SDPorAP">SDPorAP:true->SDP mode,false->AP mode.</param> /// <returns></returns> public bool SelectMode(ADMP521T_MODE mode, bool SDPorAP) { //this value is necessary, it tall DSP just change mode, but do not do any thing else. buffer_uint[1] = 0; if (mode == ADMP521T_MODE.Normal) buffer_uint[1] = 1; buffer_uint[3] = Convert.ToUInt32(SDPorAP); switch (mode) { case ADMP521T_MODE.Normal: buffer_uint[0] = (uint)ADMP521_USB_COMMAND.Mode_Normal; buffer_uint[1] = 1; return InitMode(buffer_uint); case ADMP521T_MODE.Test: buffer_uint[0] = (uint)ADMP521_USB_COMMAND.Mode_Test; return InitMode(buffer_uint); case ADMP521T_MODE.Normal_Test: buffer_uint[0] = (uint)ADMP521_USB_COMMAND.Mode_NormalTest; return InitMode(buffer_uint); case ADMP521T_MODE.Fuse: buffer_uint[0] = (uint)ADMP521_USB_COMMAND.Mode_Fuse; return InitMode(buffer_uint); default: return false; } }