+ All Categories
Home > Documents > Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · •...

Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · •...

Date post: 21-Jul-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
20
10/18/16 1 Interfacing to External Devices Notes and/or Reference 6.111 October 18, 2016 Huge Amount of Self-Contained Devices Sensors A-to-D converters D-to-A Memory Microcontrollers Etc… We need ability/fluency to extract info from and work with them
Transcript
Page 1: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

1

InterfacingtoExternalDevicesNotesand/orReference6.111October18,2016

HugeAmountofSelf-ContainedDevices

• Sensors• A-to-Dconverters• D-to-A• Memory• Microcontrollers• Etc…

• Weneedability/fluencytoextractinfofromandworkwiththem

Page 2: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

2

CaseStudy

• 9axisIMU(InertialMeasurementUnit)• Accelerometer• Gyroscope• Magnetometer

• OneoftheonlyrealMEMS(MicroElectroMechanical Systems)applicationsthathasgonefull-scale(othersmightbeTI’sDMD,gyroscopes,microphones,somemicrofluidics,Siresonators,Piezoelectrics fromInkjets,etc…)

Accelerometers

• FirstMEMSaccelerometer:1979• Positionofaproofmassiscapacitively sensedanddecodedtoprovideaccelerationdata

Proof MassSpringSpring

MeasureCapacitanceviaImpedanceDivider𝑎" → Δ𝑑

SEMoftwo-axisaccelerometer

𝑑

Page 3: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

3

UsesofAccelerationMeasurements:• Accelerationcanbeusedtodetectmotion• (pedometer,dropdetection):

• Usegravityandtrigtofindorientation:

𝜃' = tan,-𝑎"𝑎.

−𝑎"

−𝑎.

𝑔

𝑎1 = 𝑎.2 + 𝑎'2 + 𝑎"2�

Accelerometerdirections+X,+Y,+Z

Chip

Problems• Accelerometershavehugeamountsofhigh-frequencynoise• Tofix,usuallyLowPassFiltertherawsignal• ThiscutsdownonfrequencyresponsethoughL

𝜃'[𝑛] = 𝜃'[𝑛 − 1]𝛽+ 1 − 𝛽 tan,-𝑎"[𝑛 − 1]𝑎.[𝑛 − 1]

0 < 𝛽 < 1

𝜃' Angleestimatearoundyaxis

FilterCoefficient𝑎.𝑎"

Xacceleration

zacceleration

Page 4: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

4

BringinGyroscopes

• ProvideDirectAngularVelocitywhichwecanintegratetogetangle• Verylittlehigh-frequencynoise,butlotsoflowfrequencynoise (Gyrosdriftlikecrazy)

Gyroreadingsare“around”theaxistheyreferto(useright-hand

rule):time(seconds)

angle(arb.units)

Angularv

elocity

(arb.units)

GyroOperationProof Mass

SpringSpring

MeasureCapacitanceviaImpedanceDivider

Resonating

MeasureCapacitancevia

ImpedanceDivider

RotationofDevice

• ResonatingProofMass• ElectrostaticDrive• PiezoelectricDrive

• Turningout-of-plane:• Proof-massfightsturn• Detectdeviationviacapacitance

• Dothisforallthreeaxes

Changesincapacitancemeasuredatdifferentpoints

Scalenotaccurate/nordesigndetails

Page 5: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

5

• BecauseofDrift(lowfrequencynoise/offset)youwanttoavoiddoingmuchlong-termintegration• Havingbetalessthanunityensuresanyanglethatcomesfromgyroreadingwilleventuallydisappear,butinshorttermitwilldominate• Dependingontimestep:

HowtouseGyroReadings:

𝜃' 𝑛 = 𝛽𝜃' 𝑛 − 1 + 𝑇𝑔'[𝑛 − 1]

0 < 𝛽 < 1 FilterCoefficient

𝑇 TimeStep

𝑔' Gyroyreading

𝛽 ≈ 0.95 startingpoint

Whattodo?

• Usingonlyaccelerometer,leavesusblindtomotion/changeintheshorttermbutfineinthelong-term

• Usingonlygyroscope,leavesusblindinthelongterm,butgoodintheshortterm

• Whattodo?

Page 6: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

6

Mergethesignals

• ComplementaryFilter:

• CouldalsodoKalman Filter(LQE)ifdesired(orothers)

𝜃' 𝑛 = 𝛽 𝜃' 𝑛 − 1 + 𝑇𝑔'[𝑛 − 1] + 1 − 𝛽 tan,-𝑎"[𝑛 − 1]𝑎.[𝑛 − 1]

0 < 𝛽 < 1 FilterCoefficient

𝑇 TimeStep

𝑔' Gyroyreading 𝑎.𝑎"

Xacceleration

zacceleration𝛽 ≈ 0.95goodstartingpoint

HowtogetAccesstothesignalsinfirstplace?

• Someaccelerometersareanalogout(canthereforereadthemwithanA-to-Dconverter)(ADXL335,forexample)• Thesehavelimitedfunctionality…andalsoitisanalogsothere’sthewholenoiseissue....whichisnotnice• Mostflavorsofsensorsaredigital

Page 7: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

7

MPU-9250• 3-axisAccelerometer(16-bitreadings)• 3-axisGyroscope(16-bitreadings)• 3-axisMagneticHallEffectSensor(Compass)(16bitreadings)• SPIorI2Ccommunication(!)…noanalogout• On-chipFilters(programmable)• On-chipprogrammableoffsets• On-chipprogrammablescale!• On-chipsensorfusionpossible(withquaternionoutput)!• Interrupt-out(forlow-powerapplications!)• On-chipsensorfusionandothercalculations(candoorientationmathon-chiporpedometry even)• Socheaptheyusuallyaren’tevencounterfeited!J

Board:$8.00fromEbayChip:$5.00inbulk

CommonDevice-DeviceCommunicationProtocols

• Parallel(notsomuchanymore)

• Serial(UART)(stillcommoninsomecommunicationandGPSdevices)

• SPI(SerialPeripheralInterface)verycommon

• I2C(Inter-IntegratedCircuitCommunication)verycommon

Page 8: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

8

Serial(UART)• StandsforUniversalAsynchronousReceiverTransmitter• Requiresagreementahead-of-timebetweendevicesregardingthingslikeclockrate(BAUD),etc…• Twowirecommunication• Cannotreallyshare

• (everypairofdevicesneedsownpairoflines)• Dataratereally<115.2Kbps

TX/RX

RX/TX

Device 1 Device 2

SPI

• StandsforSerial-PeripheralInterface• FourWires:

• MOSI:Master-Out-Slave-In• MISO:Master-In-Slave-Out• SCK:Clock• CE/CS(ChipEnableorChipSelect)

• SCKremovesneedtoagreeaheadoftimeondatarate(fromUART)• HighDataRates:(1MHzupto~70MHzclock(bits))

MOSIMISOMaster Slave

SCKCE0/CS0

Page 9: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

9

SPI

• CanshareMOSI/MISOBus• Additionofmultipleslavesrequiresadditionalselectwires• Hardware/firmwareforSPIisprettyeasytoimplement:• Wiresareuni-directional• Classic“duh”sortofapproachtodigitalcommunication,butveryrobust.

MOSIMISOMaster Slave1

SCKCE0/CS0

Slave2

CE1/CS1

i2C

• StandsforInter-IntegratedCircuitcommunication• Inventedin1980s• TwoWire,OneforClock,onefordata(bothdirections)• Usually100kHzor400kHzclock(newerversionsgoto3.4MHz)

SDA

SCL

Master Slave

Page 10: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

10

Oni2CMultipleDevicesRequireSame#ofWires

SDA

SCL

Master Slave1

Slave2

• DevicescomewiththeirownIDnumbers(originallya7bitvaluebutmoremodernoneshave10bits)…allowspotentiallyupto2^7devicesor2^10onabus(theoreticallyanyways)

• ID’sarespecifiedatbuild,usuallyseveraltochoosefromandyouselectthembypullingexternalpinsHIorLOW

Moretostory(needpull-upresistors)

4.7kΩ

3.3V

SDA

SCL

Master Slave1

3.3V

4.7kΩ

• i2Cusesanopendrain• MeaningbothMasterandSlaveareeither:• LOW• High-Impedance

• Needexternalpull-upresistors

Page 11: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

11

Tri-State

• inout cannotbeareg ever,ever…itisclosertoawire...usualwaytoworkwiththemisthefollowing:

inout sda;

reg sda_val;

assign thing = sda_val? 1’bz: 1’b0;

Inverilog…

Asaresult:

Mode Master Slave

MasterTransmit HiZ (HI) orLOW HiZ (listening)

Slave ACK/NACK HiZ (listening) HiZ (HI)orLOW

SlaveTransmit HiZ (listening) HiZ (HI)orLOW

MasterACK/NACK HiZ (HI)orLOW HiZ (listening)

SDAin

VGS

4.7kΩ

3.3V

SDA

inout sda;reg sda_val;assign sda = sda_val? 1’bz: 1’b0;

Wanna writetoSDA?

sda_val <= 0; //or 1 if desired :wq

Wanna readtoSDA?

sda_val <= 1;//wait clock cycle…some_reg <= sda; //read from input

Page 12: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

12

i2COperation

• DataisconveyedonSDA(EitherfromMasterorSlavedependingonpointduringcommunication)• SCLis50%dutycycle• SDAgenerallychangesonfallingedgeofSCL(isn’trequired)• SDAsampledatrisingedgeofSCL• MasterisinchargeofsettingSCLfrequencyanddrivingit

MeaningsI:(Start,Stop,Sampling)

SCL:

SDA:

MasterClaimsBus(START)BypullingSDALOWwhileSCLisHIIdleState

SDAandSCLsitHI

DatafromSDAsampled@posedge ofSCL

Data/StateonSDAtransitions@negedge ofSCL*

*notspecifiedbutprobablyeasiestspottodo

MasterReleasesBus(STOP)BypullingSDAHIwhileSCLisHI

HI

LO

HI

LO

Page 13: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

13

MeaningsIIAddress

• FirstthingsentbyMasteris7bitaddress(10bitinmoremoderni2C…hassomeleading11111’sinit..don’t worryaboutthat)

• Ifadeviceonthebuspossessesthataddress,itacknowledges(ACK/NACK=0)anditbecomestheslave

• Allotherdevices(otherthanMaster/Slave)willignoreuntilSTOPsignalappearslateron.

MeaningsIII(Read/WriteBit)

• Aftersendingaddress,aRead/WriteBitisspecifiedbyMasteronSDA:• IfWrite(0)isspecified,thenextbytewillbearegistertowriteto,andfollowingbyteswillbeinformationtowriteintothatregister• IfRead(1)isspecified,theSlavewillstartsendingdataout,withtheMasteracknowledgingaftereverybyte(untilitwantsdatatonotbesentanymore)

Page 14: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

14

MeaningsIV(ACK/NACK)

• Afterevery8bits,itisthelistener’sjobtoacknowledgeornotacknowledgethedatajustsent(calledanACK/NACK)• TransmitterpullsSDAHIandlistensfornextreading(@posedge ofSCL):• IfLOW,thenreceiveracknowledgesdata• IfremainsHI,noacknowledgement

• Transmitter/Receiveractaccordingly

MeaningsV• ForMastertowritetoSlave:

• START• SendDeviceAddress(withWritebit)• Sendregisteryouwanttowriteto• Senddata…untilyou’resatisfied• STOP

• ForMastertoreadfromSlave:• START• SendDeviceAddress(withWritebit)• Sendregisteryouwanttoreadfrom• ReSTART communication• SendDeviceAddress(WithReadbit)• Readinbits• Afterevery8bits,itisMaster’sjobtoacknowledgeSlave…continuedacknowledgementleadstocontinueddataoutbySlave.

• Not-Acknowledgesays“nomoredatatoSlave”• STOPleadstoMasterceasingallcommunication

Page 15: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

15

Implementingi2ConFPGAwithMPU9250:• Mademasteri2CcontrollerinVerilog• UsedMPU9250Datasheet:42pages(basicfunctionality,timingrequirements,etc…)• MPU9250RegisterMap:55pages

State-MachineImplementationofi2CMaster

• Continuouslyreads2bytesstartingatthe0x3Bregister(Xaccelerometerdata)• PrintoutvalueinhexinLEDs• 34States• Clockedat200kHz,andcreates100kHzSCL• ChangeSDAonfallingedgeofSCL• SampleSDAonrisingedgeofSCL

Page 16: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

16

State-MachineImplementationofi2CMaster• Redundantstates(repeatedREAD/WRITE,ADDRESS,ACK/NACK,etc…)

• ARMmanualdescribes~20stateFSM

• Includedcodeonsiteforreference/startingpoint

• Diagram:onnextpageforreference

…200morelines

IDLE START1ADDRESS1

ADDRESS2

READWRITE1

REGISTER1

REGISTER2

ACKNACK1A

ACKNACK1C

IDLE

ACKNACK2AACKNACK2C

IDLE

STOP

READ2

READ1

START2

ADDRESS3

ADDRESS4

READWRITE2

ACKNACK3A

ACKNACK3C

IDLE

READ3

READ4ACK4

NACK

NACK

ACK

NACK

ACK

NACKACK

7x

7x8x

8x

8x

Page 17: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

17

CommunicationPart

1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 0

01010101010101010101010101010101010101110101010101010101010101010101010101010

SDA

SCL

VCC

GND

Nexys4MPU9250

…SCL

SDA

CommunicationPart

1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 0

01010101010101010101010101010101010101110101010101010101010101010101010101010

SDA

SCL

VCC

GND

Nexys4 MPU9250

DeviceAddress(0x68)Write=0

Acknowledge=0

DeviceRegister(0x3B)

Acknowledge=0

DeviceAddress(0x68)

Read=1

DataReadInStart

…SCL

SDA

ReStart

Page 18: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

18

CommunicationPart

1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 0

01010101010101010101010101010101010101110101010101010101010101010101010101010

SDA

SCL

VCC

GND

Nexys4 MPU9250

…SCL

SDA

“Iclaimthisbus”

“Hey,0x68…”

“Iwanna tellyousomething”

“I’mhere.Soundsgood”

“Lookatyour0x6Bregister”

“OK”

“Differentthought”

“Hey,0x68…”

“Readtomefromwhereyou’relooking”

“Forsure”

“0x6D”

”More,please”

MPU9250(Slave)DialogNexys4(Master)Dialog

CommunicationinReal-Life: DatabeingsentfromMPU9250

TriggeredonleavingIDLEstate

SCL=Purple

SDA=Yellow

Page 19: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

19

Running andreadingXacceleration:

16’hFD88=16’b1111_1101_1000_1000(2’scomplement)Flipbitstogetmagnitude:16’b0000_0010_0111_0111=-315Full-scale(default+/- 2g)-315/(2**15)*2g=-0.02gJmakessense

16’h4088=16’b0100_0000_1000_1000(2’scomplement)Leavebitstogetmagnitude:16’b0100_0000_1000_1000=+16520Full-scale(default+/- 2g)-16520/(2**15)*2=+1.01gJmakessense!

Horizontal: Vertical:

HOOKUP

Clock-Stretching(Coolpartofi2C!!!)

SCL:

• NormallyMasterdrivesSCL,butsinceMasterdrivesSCLhighbygoinghiZ,itleavestheoptionopenforSlavetostepinandpreventSCLfromgoinghighbysettingSCLLOW

MasterwantedtopullSCLHIbutslavepreventsbygoingLOW

(redneverhappens)

OnceSlavegoesHiZ again,MasterpicksbackuponSCL

• AllowsSlaveawaytobuytime/slowdownthings(ifitrequiresmultipleclockcyclestoprocessincomingdataand/orgenerateoutput)

😻

Page 20: Interfacing to External Devices - MITweb.mit.edu/6.111/www/f2016/handouts/L11_external.pdf · • One of the only real MEMS (MicroElectroMechanicalSystems) applications that has gone

10/18/16

20

FinalThoughts…WhataboutSPIorSerial?

• Ifyoucanimplementi2C,theothersareeasier.• SPIisalsoalittlelessstandardized• Generallywithcommunicationprotocols,themorewires,theeasiertheprotocol/lessoverhead• SPI(fourwires)• SerialTX/RX(littlebitmorecomplicated,butnottoobad)

• Checkouttheexamplei2Ccodefromthislecture…seeifyoucanaddclock-stretching!(notrequired)


Recommended