Firmware for MAXREFDES1213

Dependencies:   max32630fthr USBDevice

Committer:
venkik
Date:
Thu Jul 18 21:03:58 2019 +0000
Revision:
9:29c618fec8fc
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
venkik 9:29c618fec8fc 1 #include"mbed.h"
venkik 9:29c618fec8fc 2 //*****************************************************************************************************************************
venkik 9:29c618fec8fc 3 //Setting the SPI configuration for PIXI, SCLK = 10MHz (because VDVDD = 1.62 to 2.5V), SPI mode 0 and MSB first tarnsactions
venkik 9:29c618fec8fc 4 //please refer to https://datasheets.maximintegrated.com/en/ds/MAX11311.pdf for further description
venkik 9:29c618fec8fc 5
venkik 9:29c618fec8fc 6 SPI spi(P5_1, P5_2, P5_0); // mosi, miso, sclk
venkik 9:29c618fec8fc 7 DigitalOut cs(P5_3);
venkik 9:29c618fec8fc 8
venkik 9:29c618fec8fc 9 uint16_t MAX11300regWrite(uint8_t regAddress8, uint16_t regData16)
venkik 9:29c618fec8fc 10 {
venkik 9:29c618fec8fc 11 uint8_t Byte1;
venkik 9:29c618fec8fc 12 uint8_t Byte2;
venkik 9:29c618fec8fc 13 uint8_t Byte3;
venkik 9:29c618fec8fc 14 uint8_t rightByte;
venkik 9:29c618fec8fc 15 uint8_t leftByte;
venkik 9:29c618fec8fc 16 uint16_t Transferred_word;
venkik 9:29c618fec8fc 17
venkik 9:29c618fec8fc 18 rightByte = regData16 & 0xFF;
venkik 9:29c618fec8fc 19 leftByte = (regData16 >> 8 ) & 0xFF;
venkik 9:29c618fec8fc 20
venkik 9:29c618fec8fc 21 // Setup the spi for 8 bit data, high steady state clock,
venkik 9:29c618fec8fc 22 // second edge capture, with a 1MHz clock rate
venkik 9:29c618fec8fc 23 spi.format(8,0);
venkik 9:29c618fec8fc 24 spi.frequency(1000000);
venkik 9:29c618fec8fc 25
venkik 9:29c618fec8fc 26 // Select the device by seting chip select low
venkik 9:29c618fec8fc 27 cs = 0;
venkik 9:29c618fec8fc 28 Byte1 = spi.write(regAddress8 << 1);
venkik 9:29c618fec8fc 29 Byte2 = spi.write(leftByte);
venkik 9:29c618fec8fc 30 Byte3 = spi.write(rightByte);
venkik 9:29c618fec8fc 31 //Transferred_word = ((leftByte << 8) | rightByte);
venkik 9:29c618fec8fc 32 Transferred_word = regData16;
venkik 9:29c618fec8fc 33 // Deselect the device
venkik 9:29c618fec8fc 34 cs = 1;
venkik 9:29c618fec8fc 35 return Transferred_word;
venkik 9:29c618fec8fc 36
venkik 9:29c618fec8fc 37 }
venkik 9:29c618fec8fc 38
venkik 9:29c618fec8fc 39 //**************************************************************************************************************************
venkik 9:29c618fec8fc 40 //Delay function
venkik 9:29c618fec8fc 41 void MAX11300initDelayus(uint8_t delay_us)
venkik 9:29c618fec8fc 42 {
venkik 9:29c618fec8fc 43 wait_us(delay_us);
venkik 9:29c618fec8fc 44 }
venkik 9:29c618fec8fc 45
venkik 9:29c618fec8fc 46 //**************************************************************************************************************************
venkik 9:29c618fec8fc 47 //SPI Read function
venkik 9:29c618fec8fc 48
venkik 9:29c618fec8fc 49 uint16_t MAX11300regRead(uint8_t regAddress8)
venkik 9:29c618fec8fc 50 {
venkik 9:29c618fec8fc 51 uint8_t Byte1;
venkik 9:29c618fec8fc 52 uint8_t Byte2;
venkik 9:29c618fec8fc 53 uint8_t Byte3;
venkik 9:29c618fec8fc 54 uint16_t Received_word;
venkik 9:29c618fec8fc 55
venkik 9:29c618fec8fc 56 // Setup the spi for 8 bit data, high steady state clock,
venkik 9:29c618fec8fc 57 // second edge capture, with a 1MHz clock rate
venkik 9:29c618fec8fc 58 spi.format(8,0);
venkik 9:29c618fec8fc 59 spi.frequency(1000000);
venkik 9:29c618fec8fc 60
venkik 9:29c618fec8fc 61 // Select the device by seting chip select low
venkik 9:29c618fec8fc 62 cs = 0;
venkik 9:29c618fec8fc 63 Byte1 = spi.write((regAddress8 << 1) | 1);
venkik 9:29c618fec8fc 64 Byte2 = spi.write(0xAA);
venkik 9:29c618fec8fc 65 Byte3 = spi.write(0xAA);
venkik 9:29c618fec8fc 66 Received_word = ((Byte2 << 8) | Byte3);
venkik 9:29c618fec8fc 67
venkik 9:29c618fec8fc 68 // uint16_t Shift_Size = sizeof(uint16_t)*8;
venkik 9:29c618fec8fc 69 // int np = 8; // number of positions to shift
venkik 9:29c618fec8fc 70 // np = np%Shift_Size;
venkik 9:29c618fec8fc 71 // Received_word = Received_word>>np | Received_word << (Shift_Size-np);
venkik 9:29c618fec8fc 72
venkik 9:29c618fec8fc 73 // Deselect the device
venkik 9:29c618fec8fc 74 cs = 1;
venkik 9:29c618fec8fc 75 return Received_word;
venkik 9:29c618fec8fc 76
venkik 9:29c618fec8fc 77 }