예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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;
     }
 }