KISS Data Aquisition and Control System
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

148 lines
5.6 KiB

#define CLOCK_CNTR_ADDR 0x00000000
#define ADC_STATE_ADDR 0x00000004
#define ADC_CNTRL_STR_ADDR 0x00000008
#define ADC_CNTRL_CHANGE 0x0000000C
#define ADC_ADDR 0x00000010
#define ADC_SIZE 0x00000014
#define ADC_SAMPLE_DIVISOR 0x00000018
#define PRU1_NUM_BLOCKS 0x0000001C
#define PRU0_NUM_BLOCKS 0x00000020
#define BLOCK_SIZE_ADDR 0x00000024
#define PRU1_WR_FLAG 0x00000028
#define PRU1_BUFF_COUNT 0x0000002C
#define PRU1_HEAD 0x00000030
#define PRU1_WRAP_COUNT 0x00000034
#define PRU0_WR_FLAG 0x00000038
#define PRU0_BUFF_COUNT 0x0000003C
#define PRU0_HEAD 0x00000040
#define PRU0_WRAP_COUNT 0x00000044
// This map documents pin mapping to the ADS1287, and the associated registers
#define PWDN_B_CH_1_4 r30.t6 // Pin 8.39
#define PWDN_C_CH_1_4 r30.t7 // Pin 8.40
#define PWDN_B_CH_5_8 r30.t4 // Pin 8.41
#define PWDN_D_CH_1_4 r30.t5 // Pin 8.42
#define PWDN_A_CH_5_8 r30.t2 // Pin 8.43
#define PWDN_D_CH_5_8 r30.t3 // Pin 8.44
#define PWDN_A_CH_1_4 r30.t0 // Pin 8.45
#define PWDN_C_CH_5_8 r30.t1 // Pin 8.46
#define DELAY_PULSES 0x10000
// SPI Interface to AD1278 B & D vi PRU1
#define SPI_CLK_B_D_PIN R30.t8 // Pin 8.27
#define SPI_DSR_B_D_PIN R31.t10 // Pin 8.28
#define SPI_DATA_IN_B_D_PIN R31.t11 // Pin 8.30
#define SPI_SYNC_PIN R30.t9 // Pin 8.29
// SPI Interface to AD1278 A & C vi PRU0
#define SPI_CLK_A_C_PIN R30.t1 // Pin 9.29
#define SPI_DSR_A_C_PIN R31.t5 // Pin 9.27
#define SPI_DATA_IN_A_C_PIN R31.t3 // Pin 9.28
#define PWDN_B_1_4_BIT 0x1 // Pin 8.39
#define PWDN_C_1_4_BIT 0x2 // Pin 8.40
#define PWDN_B_5_8_BIT 0x4 // Pin 8.41
#define PWDN_D_1_4_BIT 0x8 // Pin 8.42
#define PWDN_A_5_8_BIT 0x10 // Pin 8.43
#define PWDN_D_5_8_BIT 0x20 // Pin 8.44
#define PWDN_A_1_4_BIT 0x40 // Pin 8.45
#define PWDN_C_5_8_BIT 0x80 // Pin 8.46
// Register Use
// R0 General Purpose / Indexing
// R1 General Purpose
#define CLOCK_COUNT r2 // Clock Counter used to determine SCLOCK frequency
#define RUN_STATE r3 // Run State - can turn off data acq via this
#define ADC_CNTRL_STR r4 // ADC Control string used to enable/disable daq channels and daq
#define ADC_CHNG_FLG r5 // ADC Control Change flag used to indicate a settings change
#define SMPL_BIT_CNTR r6 // Sample bit counter, used to count number of bits read
#define CHAN_BITMASK r7 // Channel bitmask used to append channel in MSB of the sample
#define SHR_MEM_PTR r8 // Pointer to the shared memory buffer used to store data
#define SHR_MEM_SZ r9 // Size of shared memory buffer
#define COUNT r10 // Sample count
#define HEAD r11 // Buffer head
#define TAIL r12 // Buffer Tail
#define PRU_DATA_STRT r13 // We store a pointer to the beginning of buffer space here
#define CURRENT_SAMPLE r14
#define CURRENT_BUF r15 // Current 128K buffer we are writing to (0 - 9)
#define CUR_BUF_ADRS r16 // Memory address of current 128K buffer
#define CUR_BUF_LEFT r17 // This is the amount left of the current buffer in bytes
#define SHR_MEM_START r18 // Address of shared memory region
#define NUM_BLOCKS r19 // Number of 128k blocks we are going to record
#define BUFF_COUNT r20
#define SAMPLE1 r21
#define SAMPLE2 r22
#define SAMPLE3 r23
#define SAMPLE4 r24
#define SAMPLE5 r25
#define SAMPLE6 r26
#define SAMPLE7 r27
#define SAMPLE8 r28
#define WRAP_COUNT r29
// R30 and R31 are input/output registers, do not use for general purpose regs.
#define BUFSIZE 0x20000 // 128K is optimal flash write size for bbone.
#define SHARED_MEM_SIZE 0x100000
#define QUEUE_SIZE 8 // Number of buffers of BUFSIZE in the queue
#define DAQ_FILE_SIZE 2000 // Number of 128k blocks.
//#define DAQ_FILE_SIZE 0x40 // Number of 128k blocks.
#define PRU1_START_OFFSET 0x00000100
#define PRU0_START_OFFSET 0x00100000
#define FULL_COUNT 0x00FFFFFF
#define BUF_HDR_SIZE 32 // 32 Byte header contained at start of 128k buffer
#define SAMPLE_SIZE 24
#define ADS_CONTROL_STRING 0x1FF // Banks A enabled
#define ADS_SAMPLE_DIVISOR 0x1
#define ADS_CLOCKS 0x0E /// Number of instructions to wait between toggling clock high to low.
//#define ADS_CLOCKS 0x6 /// Number of instructions to wait between toggling clock high to low.
#define PRU0_ADC_CONTROL_PRU 0 // PRU 0 controls ADC2 and ADC3
#define PRU1_ADC_CONTROL_PRU 1 // PRU 1 controls power up/down of ads1278 channels, ADC0 and ADC1
#define BYTES_PER_SAMPLE 4
#define ADS_BOARD_ENABLE 0x100
#define ADC_PRU_DATA_SIZE 128
#define INSTRUCTIONS_PER_SAMPLE 0x02509 //Roughly the number of delay count to be equal to one minute
#define OK 1
#define ERR -1
#define MAP_SIZE 0x0FFFFFFF
#define MAP_MASK (MAP_SIZE - 1)
#define MMAP0_LOC "/sys/class/uio/uio0/maps/map0/"
#define MMAP1_LOC "/sys/class/uio/uio0/maps/map1/"
#define PRU0_R31_VEC_VALID 32 // allows notification of program completion
#define PRU_EVTOUT_0 0 // the event number that is sent back
#define STOP 0
#define RUN 1
#define TEST 2
#define CHANGE 1
#define NO_CHANGE 0
#define TRUE 1
#define FALSE 0
#define ENABLED 1