⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comms.lst

📁 AD5933评估板下位机程序(keil C)和上位机程序(VB)
💻 LST
📖 第 1 页 / 共 3 页
字号:
 230   3                                      while(EP0CS & bmEPBUSY);
 231   3                                      i2c_slad = SETUPDAT[2];
 232   3                                      AddrPtr = SETUPDAT[4];
 233   3                                      //EZUSB_WriteI2C(i2c_slad, 0x01, &AddrPtr);     //0x01 = length
 234   3                                      //EZUSB_ReadI2C(i2c_slad, 0x01, EP0BUF);        //0x01 = length
 235   3      
 236   3                                      *EP0BUF = ReadSMBUSData(SETUPDAT[2], SETUPDAT[4]);
 237   3      
 238   3                                      //added for adm1032 test
 239   3                                      //*EP0BUF = ReadSMBUSDataWithExtraClocks(SETUPDAT[2]);
 240   3      
 241   3                                      //*EP0BUF = TstCntr++;
C51 COMPILER V7.07   COMMS                                                                 02/08/2007 14:49:17 PAGE 5   

 242   3      
 243   3                                      EP0BCH = 0;
 244   3                                      EP0BCL = 1;  // Arm endpoint with # bytes to transfer
 245   3                                      }
 246   2                              if (SETUPDAT[0] == VR_DOWNLOAD)
 247   2                                      {
 248   3                                      EP0BCH = 0;
 249   3                                      EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 250   3                                      i2c_slad = SETUPDAT[2];
 251   3                                      DataVals[0] = SETUPDAT[4]; //AddrPtr
 252   3                                      DataVals[1] = SETUPDAT[5]; //DataOut
 253   3                                      //EZUSB_WriteI2C(i2c_slad, 0x02, DataVals);     //0x02 = length 
 254   3                                      WriteSMBUSData(SETUPDAT[2], SETUPDAT[4], SETUPDAT[5]);
 255   3                                      }
 256   2                      break;  
 257   2                      
 258   2                      case VR_I2C_SMBUS3DATA:
 259   2                              if (SETUPDAT[0] == VR_UPLOAD)
 260   2                                      {
 261   3                                      while(EP0CS & bmEPBUSY);
 262   3                                      i2c_slad = SETUPDAT[2];
 263   3                                      AddrPtr = SETUPDAT[4];
 264   3                                      //EZUSB_WriteI2C(i2c_slad, 0x01, &AddrPtr);     //0x01 = length
 265   3                                      //EZUSB_ReadI2C(i2c_slad, 0x01, EP0BUF);        //0x01 = length
 266   3      
 267   3                                      *EP0BUF = ReadSMBUS3Data(SETUPDAT[2], SETUPDAT[4], SETUPDAT[5]);
 268   3      
 269   3                                      //added for adm1032 test
 270   3                                      //*EP0BUF = ReadSMBUSDataWithExtraClocks(SETUPDAT[2]);
 271   3      
 272   3                                      //*EP0BUF = TstCntr++;
 273   3      
 274   3                                      EP0BCH = 0;
 275   3                                      EP0BCL = 1;  // Arm endpoint with # bytes to transfer
 276   3                                      }
 277   2                              if (SETUPDAT[0] == VR_DOWNLOAD)
 278   2                                      {
 279   3                                      EP0BCH = 0;
 280   3                                      EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 281   3                                      i2c_slad = SETUPDAT[2];
 282   3                                      DataVals[0] = SETUPDAT[4]; //AddrPtr
 283   3                                      DataVals[1] = SETUPDAT[5]; //DataOut
 284   3                                      //EZUSB_WriteI2C(i2c_slad, 0x02, DataVals);     //0x02 = length 
 285   3                                      WriteSMBUS3Data(SETUPDAT[2], SETUPDAT[4], SETUPDAT[5], SETUPDAT[6]);
 286   3                                      }
 287   2                      break;  
 288   2      
 289   2                      case VR_I2C_SWITCH:
 290   2                              if (SETUPDAT[0] == VR_UPLOAD)
 291   2                                      {
 292   3                                      while(EP0CS & bmEPBUSY);
 293   3                                      i2c_slad = SETUPDAT[2];
 294   3                                      //EZUSB_ReadI2C(SETUPDAT[2], 0x01, EP0BUF);     //0x01 = length
 295   3                                      *EP0BUF = ReadSWITCHData(SETUPDAT[2]);
 296   3                                      EP0BCH = 0;
 297   3                                      EP0BCL = 1;  // Arm endpoint with # bytes to transfer
 298   3                                      }
 299   2                              if (SETUPDAT[0] == VR_DOWNLOAD)
 300   2                                      {
 301   3                                      EP0BCH = 0;
 302   3                                      EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 303   3                                      i2c_slad = SETUPDAT[2];
C51 COMPILER V7.07   COMMS                                                                 02/08/2007 14:49:17 PAGE 6   

 304   3                                      //EZUSB_WriteI2C(i2c_slad, 0x01, &SETUPDAT[4]); //0x02 = length 
 305   3                                      WriteSWITCHData(SETUPDAT[2], SETUPDAT[4]);
 306   3                                      }
 307   2                      break;
 308   2      
 309   2                      case VR_PORT_ACCESS:
 310   2                              if (SETUPDAT[0] == VR_UPLOAD)
 311   2                                      {
 312   3                                      while(EP0CS & bmEPBUSY);
 313   3                                      *(EP0BUF+0) = IOA;
 314   3                                      *(EP0BUF+1) = OEA;
 315   3                                      *(EP0BUF+2) = IOB;
 316   3                                      *(EP0BUF+3) = OEB;
 317   3                                      *(EP0BUF+4) = IOD;
 318   3                                      *(EP0BUF+5) = OED;
 319   3                                      EP0BCH = 0;
 320   3                                      EP0BCL = SETUPDAT[6];  // Arm endpoint with # bytes to transfer
 321   3                                      }
 322   2                               if (SETUPDAT[0] == VR_DOWNLOAD)
 323   2                                      {
 324   3                                      EP0BCH = 0;
 325   3                                      EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 326   3      
 327   3                                      IOB = SETUPDAT[2];
 328   3                                      OEB = SETUPDAT[4];
 329   3                                      }
 330   2                      break;
 331   2      
 332   2                      case VR_Heater:
 333   2                              if (SETUPDAT[0] == VR_UPLOAD)
 334   2                                      {
 335   3                                      while(EP0CS & bmEPBUSY);
 336   3      
 337   3                                      *EP0BUF = Heater1PWM;
 338   3                                      *(EP0BUF+1) = Heater2PWM;
 339   3                                      *(EP0BUF+2) = IOB;
 340   3      
 341   3                                      EP0BCH = 0;
 342   3                                      EP0BCL = SETUPDAT[6];
 343   3                                      }
 344   2                              if (SETUPDAT[0] == VR_DOWNLOAD)
 345   2                                      {
 346   3                                      EP0BCH = 0;
 347   3                                      EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 348   3                                      
 349   3                                      if(SETUPDAT[2] == 1)
 350   3                                              Heater1PWM = SETUPDAT[4] << 1;
 351   3                                      else
 352   3                                              Heater2PWM = SETUPDAT[4] << 1;
 353   3      
 354   3                                      EP0BCH = 0;
 355   3                                      EP0BCL = 1;
 356   3                                      }
 357   2                      break;
 358   2      
 359   2                      case VR_ReadBlock:
 360   2                              if (SETUPDAT[0] == VR_UPLOAD)
 361   2                                      {
 362   3                                      while(EP0CS & bmEPBUSY);
 363   3      
 364   3                                      ReadBlockData(SETUPDAT[2],SETUPDAT[6],SETUPDAT[4]);
 365   3      
C51 COMPILER V7.07   COMMS                                                                 02/08/2007 14:49:17 PAGE 7   

 366   3                                      EP0BCH = 0;
 367   3                                      EP0BCL = SETUPDAT[6];
 368   3                                      }
 369   2                      /*      if (SETUPDAT[0] == VR_DOWNLOAD)
 370   2                                      {
 371   2                                      EP0BCH = 0;
 372   2                                      EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 373   2      
 374   2                                      DeviceAddress = SETUPDAT[2];            // set device address for block reads
 375   2                                      BlockReadEnabled = TRUE;                        // enablr block read loop
 376   2                                      DataCollected = TRUE;
 377   2                                      
 378   2                                      *EP0BUF = 1;
 379   2                                      EP0BCH = 0;
 380   2                                      EP0BCL = 1;
 381   2                                      }       */
 382   2                      break;
 383   2                      
 384   2              }
 385   1         return(FALSE);
 386   1      }
 387          
 388          void ReadBlockData(BYTE DevAddr, BYTE Num, BYTE StartAddr)
 389          {
 390   1      BYTE i;
 391   1      
 392   1              for(i=0 ; i<Num ; i++)
 393   1                      *(EP0BUF+i) = ReadSMBUSData(DevAddr, (BYTE)(StartAddr+i));
 394   1      }
 395          
 396          void WriteSMBUSData(BYTE DevAddr, BYTE AddrPtr, BYTE DataOut)
 397          {
 398   1              while (I2CS & bmSTOP);  //wait for previous transaction to end
 399   1              I2CS |= bmSTART;                //set start
 400   1              I2DAT = (DevAddr << 1); //set device address + write bit
 401   1          while((I2CS & 1) == 0);     //wait for DONE
 402   1              I2DAT = AddrPtr;                //set address pointer
 403   1              while((I2CS & 1) == 0); //wait for DONE
 404   1              I2DAT = DataOut;                //set data 
 405   1              while((I2CS & 1) == 0); //wait for DONE
 406   1              I2CS |= bmSTOP;
 407   1      }
 408          void WriteSMBUS3Data(BYTE DevAddr, BYTE AddrPtr, BYTE DataOut, BYTE DataOut2)// Gerard
 409          {
 410   1              while (I2CS & bmSTOP);  //wait for previous transaction to end
 411   1              I2CS |= bmSTART;                //set start
 412   1              I2DAT = (DevAddr << 1); //set device address + write bit
 413   1          while((I2CS & 1) == 0);     //wait for DONE
 414   1              I2DAT = AddrPtr;                //set address pointer
 415   1              while((I2CS & 1) == 0); //wait for DONE
 416   1              I2DAT = DataOut;                //set data 
 417   1              while((I2CS & 1) == 0); //wait for DONE
 418   1              I2DAT = DataOut2;               //set data 
 419   1              while((I2CS & 1) == 0); //wait for DONE
 420   1              I2CS |= bmSTOP;
 421   1      }
 422          BYTE ReadSMBUSData(BYTE DevAddr, BYTE AddrPtr)
 423          {
 424   1      BYTE TempVal;
 425   1      WORD i=0;
 426   1      
 427   1              while (I2CS & bmSTOP);  //wait for previous transaction to end
C51 COMPILER V7.07   COMMS                                                                 02/08/2007 14:49:17 PAGE 8   

 428   1              I2CS |= bmSTART;                //set start
 429   1              I2DAT = (DevAddr << 1); //set device address + write bit
 430   1          while((I2CS & 1) == 0);     //wait for DONE
 431   1              I2DAT = AddrPtr;                //set address pointer
 432   1              while((I2CS & 1) == 0); //wait for DONE
 433   1              //I2CS |= bmSTOP;                       //stop transaction
 434   1              //while (I2CS & bmSTOP);        //wait for previous transaction to end
 435   1              I2CS |= bmSTART;                //set start
 436   1              I2DAT = (DevAddr << 1) | 1;     //set device address + read bit
 437   1          while((I2CS & 1) == 0);     //wait for DONE
 438   1              I2CS |= bmLASTRD;               //set last-read bit
 439   1              TempVal = I2DAT;                //reading this starts the 9 read clocks
 440   1              while((I2CS & 1) == 0); //wait for DONE
 441   1              I2CS |= bmSTOP;                 //stop transaction
 442   1              return(I2DAT);  
 443   1      }
 444                  
 445          BYTE ReadSMBUS3Data(BYTE DevAddr, BYTE AddrPtr, BYTE DataOut)//Gerard
 446          {
 447   1      BYTE TempVal;
 448   1      WORD i=0;
 449   1      
 450   1              while (I2CS & bmSTOP);  //wait for previous transaction to end
 451   1              I2CS |= bmSTART;                //set start
 452   1              I2DAT = (DevAddr << 1); //set device address + write bit
 453   1          while((I2CS & 1) == 0);     //wait for DONE
 454   1              I2DAT = AddrPtr;                //set address pointer
 455   1              while((I2CS & 1) == 0); //wait for DONE
 456   1              I2DAT = DataOut;                //set address pointer
 457   1              while((I2CS & 1) == 0); //wait for DONE
 458   1              //I2CS |= bmSTOP;                       //stop transaction
 459   1              //while (I2CS & bmSTOP);        //wait for previous transaction to end
 460   1              I2CS |= bmSTART;                //set start
 461   1              I2DAT = (DevAddr << 1) | 1;     //set device address + read bit
 462   1          while((I2CS & 1) == 0);     //wait for DONE
 463   1              I2CS |= bmLASTRD;               //set last-read bit
 464   1              TempVal = I2DAT;                //reading this starts the 9 read clocks
 465   1              while((I2CS & 1) == 0); //wait for DONE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -