Firmware for MAXREFDES1213
Dependencies: max32630fthr USBDevice
MAX11311_Electronic_Load.cpp@9:29c618fec8fc, 2019-07-18 (annotated)
- Committer:
- venkik
- Date:
- Thu Jul 18 21:03:58 2019 +0000
- Revision:
- 9:29c618fec8fc
Initial commit
Who changed what in which revision?
User | Revision | Line number | New 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 | } |