SPI 12bit D/A 2ch MCP4922 library

Committer:
ritarosakai
Date:
Tue Aug 06 12:50:39 2019 +0000
Revision:
1:6c010acaae66
Parent:
0:2e338068a5a7
Changed no to use MISO pin

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ritarosakai 0:2e338068a5a7 1 #include "MCP4922.h"
ritarosakai 0:2e338068a5a7 2 #include "mbed.h"
ritarosakai 0:2e338068a5a7 3
ritarosakai 1:6c010acaae66 4 MCP4922::MCP4922(PinName MOSI,PinName SCK,PinName CS,PinName LDAC):
ritarosakai 1:6c010acaae66 5 dac_SPI(MOSI,NC,SCK),dac_cs(CS),dac_l(LDAC)
ritarosakai 0:2e338068a5a7 6 {
ritarosakai 0:2e338068a5a7 7 dac_SPI.format(16,0);
ritarosakai 0:2e338068a5a7 8 dac_SPI.frequency(20000000);
ritarosakai 0:2e338068a5a7 9 dac_cs=1;
ritarosakai 0:2e338068a5a7 10 dac_l=1;
ritarosakai 0:2e338068a5a7 11 }
ritarosakai 0:2e338068a5a7 12
ritarosakai 0:2e338068a5a7 13 void MCP4922::write(int ch,float value)
ritarosakai 0:2e338068a5a7 14 {
ritarosakai 0:2e338068a5a7 15 if(value<0) {
ritarosakai 0:2e338068a5a7 16 value=0;
ritarosakai 0:2e338068a5a7 17 } else if(value>1) {
ritarosakai 0:2e338068a5a7 18 value=1;
ritarosakai 0:2e338068a5a7 19 }
ritarosakai 0:2e338068a5a7 20 dac_cs=0;
ritarosakai 0:2e338068a5a7 21 int data;
ritarosakai 0:2e338068a5a7 22 if(ch==0) {
ritarosakai 0:2e338068a5a7 23 data=(0b0011<<12)|(int)(value*0xFFF);
ritarosakai 0:2e338068a5a7 24 } else if(ch==1) {
ritarosakai 0:2e338068a5a7 25 data=(0b1011<<12)|(int)(value*0xFFF);
ritarosakai 0:2e338068a5a7 26 }
ritarosakai 0:2e338068a5a7 27 dac_SPI.write(data);
ritarosakai 0:2e338068a5a7 28 dac_cs=1;
ritarosakai 0:2e338068a5a7 29 dac_l=0;
ritarosakai 0:2e338068a5a7 30 dac_l=1;
ritarosakai 0:2e338068a5a7 31 }