Пример #1
0
int bridge_init(int32_t &BHandle) {

  int status, caenst;
  CVBoardTypes   VMEBoard;
  short          Link, Device;
  BHandle = 0;
  unsigned short DataShort=0;
  //  VMEBoard = cvV1718;
  VMEBoard = cvV2718;
  Device = 0;
  Link = 0;
  bool debug = false;
  
  if( CAENVME_Init(VMEBoard, Link, Device, &BHandle) != cvSuccess ) 
    {
      printf("\n\n Error opening the device\n");
      return 0;
    }
  else{
    printf("VME initialized \n");
  }

  CAENVME_SystemReset(BHandle);
  usleep(10000);

  status = 1;
  caenst = CAENVME_ReadRegister(BHandle, cvStatusReg, &DataShort);
  status *= (1-caenst); 
  if(debug) {
    if(status==1){
      printf("V1718 Status reg \n Bridge is Controlled = %i, USB speed = %i, ",
	     (DataShort & 0x2)>>1,(DataShort & 0x8000)>>16);
      //    int_to_binary((DataShort&0xff));
    }
  }
Пример #2
0
/* offset deve essere allineato a 16 bit (BIT0 non significativo) */
int bpi_flash_read(int32_t dev, uint32_t offset, uint32_t* bpi_data) {
	uint32_t app_data;

	//Imposto indirizzo
	app_data = offset << 1;
	CAENVME_WriteRegister(dev, A3818_BPI_FLASH_AD | 0x1000, app_data);

	//Abbasso il CE
	CAENVME_WriteRegister(dev, A3818_BPI_FLASH_CMD | 0x1000, 0x6);

	//Abbasso OE
	CAENVME_WriteRegister(dev, A3818_BPI_FLASH_CMD | 0x1000, 0x2);

	//Rialzo OE
	CAENVME_WriteRegister(dev, A3818_BPI_FLASH_CMD | 0x1000, 0x6);

	//Alzo CE
	CAENVME_WriteRegister(dev, A3818_BPI_FLASH_CMD | 0x1000, 0x7);

	//Sono significativi, per la lettura, solo i 16 bit bassi
	CAENVME_ReadRegister(dev, A3818_BPI_FLASH_DT | 0x1000, &app_data);
	*bpi_data = app_data & 0x0000FFFF;

	return 0;
}
Пример #3
0
// Disabilita l'accesso alla BPI flash.
// L'a3818 può accedere alla sola flash SPI.
void A3818_EnableSPIAccess(int32_t handle) {
	uint32_t data;
	CAENVME_ReadRegister(handle, A3818_DMISCCS | 0x1000, &data);
	data = data & (~A3818_DMISCCS_SPI_BPI_FLASH_SEL);
	CAENVME_WriteRegister(handle, A3818_DMISCCS | 0x1000, data);
}