#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