cyber physical systems communication
play

Cyber-Physical Systems Communication ICEN 553/453 Fall 2018 Prof. - PowerPoint PPT Presentation

Cyber-Physical Systems Communication ICEN 553/453 Fall 2018 Prof. Dola Saha 1 Why do we need Communication? Connect different systems together o Two embedded systems o A desktop and an embedded system Connect different chips together


  1. Cyber-Physical Systems Communication ICEN 553/453– Fall 2018 Prof. Dola Saha 1

  2. Why do we need Communication? § Connect different systems together o Two embedded systems o A desktop and an embedded system § Connect different chips together in the same embedded system o MCU to peripheral o MCU to MCU 2

  3. What determines how much we can transmit? ( + * ! = #$%& ' * Ø Shannon’s noisy channel coding theorem § Says you can achieve error-free communicate at any Ø Rate up to the channel capacity , and can’t do any better § C: channel capacity, in bits / s § W: bandwidth amount of frequency “real estate”, in Hz (cycles / s) § S: Signal power § N: Noise power 3

  4. Communication Methods Ø Different physical layers methods: wires, radio frequency (RF), optical (IR) Ø Different encoding schemes: amplitude, frequency, and pulse-width modulation 4

  5. Dimensions to consider Ø bandwidth – number of wires – serial/parallel Ø speed – bits/bytes/words per second Ø timing methodology – synchronous or asynchronous Ø number of destinations/sources Ø arbitration scheme – daisy-chain, centralized, distributed Ø protocols – provide some guarantees as to correct communication 5

  6. Parallel and Serial Bus 6

  7. Parallel and Serial Communication Ø Serial Ø Parallel § Single wire or channel to transmit § Multiple wires to transmit information information one bit at a time one byte or word at a time § Requires synchronization between § Good for high-bandwidth requirements sender and receiver (CPU to disk) § Sometimes includes extra wires for § Crosstalk creates interference between clock and/or handshaking multiple wires § Good for inexpensive connections § Length of link increases crosstalk (e.g.,terminals) § More expensive § Good for long-distance connections wiring/connectors/current requirements (e.g.,LANs) 7

  8. Parallel vs. Serial Digital Interfaces Parallel (one wire per bit) Ø PCI § ATA: Advanced Technology Attachment § PCI: Peripheral Component Interface § SCSI: Small Computer System Interface § Serial (one wire per direction) SCSI § RS-232 § SPI: Serial Peripheral Interface bus § I2C: Inter-Integrated Circuit USB § USB: Universal Serial Bus § SATA: Serial ATA § Ethernet, IrDA, Firewire, Bluetooth, DVI, HDMI Mixed (one or more “lanes”) RS-232 Ø § PCIe: PCI Express 8

  9. Parallel vs Serial Digital Interfaces Ø Parallel connectors have been replaced by Serial § Significant crosstalk/inter-wire interference for parallel connectors § Maintaining synchrony across the multiple wires § Serial connection speeds can be increased by increasing transmission freq, but parallel crosstalk gets worse at increased freq 9

  10. Serial Peripheral Interface (SPI) Synchronous full-duplex communication Ø Can have multiple slave devices Ø No flow control or acknowledgment Ø Slave cannot communicate with slave directly. Ø Serial Peripheral Interface http://upload.wikimedia.org/wikipedia/commons/thumb/e/ed/ SPI_single_slave.svg/350px-SPI_single_slave.svg.png SCLK: serial clock MOSI: master out slave in SS: slave select (active low) MISO: master in slave out 10

  11. SPI – Point-to-point and Daisy Chain Daisy Chain Point-to-point SCLK: serial clock MOSI: master out slave in SS: slave select (active low) MISO: master in slave out Pictures: https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi/ 11

  12. Data Exchange Ø Master has to provide clock to slave Ø Synchronous exchange: for each clock pulse, a bit is shifted out and another bit is shifted in at the same time. This process stops when all bits are swapped. Ø Only master can start the data transfer 12

  13. Clock 13

  14. Clock Phase and Polarity Ø CPHA (Clock PHase) § = 0 or =1, determines when data goes on bus relative to clock Clock Phase (CPHA) CPHA = 1 CPHA = 0 Ø CPOL (Clock POLarity) CPOL = 0 Clock Polarity (CPOL) § =0 clock idles low between transfers Mode 0 Mode 1 § =1 clock idles high between transfers Mode 2 Mode 3 CPOL = 1 Sampling Toggling Toggling Sampling Edge Edge Edge Edge CPOL = 0 ⟶ SCLK is pushed to low during idle. Otherwise, pulled to high during idle. Ø CPHA = 0 ⟶ the first clock transition (either rising or falling) is the first data capture edge. Ø Otherwise, the second clock transition is the first data capture edge. Combination of CPOL and CPHA determines the clock edge for transmitting and receiving. Ø 14

  15. Clock Phase and Polarity Clock Phase (CPHA) CPHA = 0 CPHA = 1 CPOL = 0 Clock Polarity (CPOL) Mode 0 Mode 1 Mode 2 Mode 3 CPOL = 1 Sampling Toggling Toggling Sampling Edge Edge Edge Edge SSN SCLK CPOL = 0 CPHA = 0 SCLK CPOL = 0 CPHA = 1 SCLK CPOL = 1 CPHA = 0 SCLK CPOL = 1 CPHA = 1 b out [6] b out [7] b out [0] b out [1] b out [2] b out [3] b out [4] b out [5] Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Edge Edge Edge Edge Edge Edge Edge Edge 15

  16. SPI: Pros and Cons Ø Pros Ø Cons § Simplest way to connect 1 § No built-in acknowledgement of peripheral to a micro data § Fast (10s of Mbits/s, not on MSP) § Not very good for multiple slaves because all lines actively driven, § Requires 4 wires unlike I2C § 3 wire variants exist...some get § Clock does not need to be rid of full duplex and share a precise data line, some get rid of slave § Nice for connecting 1 slave select 16

  17. Analog to Digital Converter Ø DGND : digital ground pin for the chip Ø CS : chip select. Ø DIN : data in from the MC itself. Ø DOUT: data out pin. Ø CLK: clock pin. Ø AGND: analog ground and obviously connects to ground. Ø VREF: analog reference voltage. You can change this if you want to change the scale. You probably want to keep it the same so keep this as 3.3v. Ø VDD: positive power pin for the chip. 17

  18. MCP 3008 18

  19. Configuration Bits Ø Single or Differential Ø D2, D1, D0 19

  20. Communication 20

  21. Analog to Digital Converter RPi 3.3V RPi 3.3V RPi GND RPi SClk RPi MISO RPi MOSI RPi CE0 RPi GND 21

  22. Connect a Sensor 22

  23. Channel Select The device will begin to sample the analog input on the fourth rising edge of the clock after the Ø start bit has been received. The sample period will end on the falling edge of the fifth clock following the start bit. 23

  24. Enable SPI in Raspberry PI Ø sudo raspi-config Ø 5 Interfacing Options Ø P4 SPI Ø Would you like the SPI interface to be enabled? § Select Yes Ø The SPI interface is enabled § Select OK Ø Finish 24

  25. Has SPI been really enabled? Ø sudo ls /dev/spi* Ø /dev/spidev0.0 /dev/spidev0.1 25

  26. Install Adafruit MCP 3008 Python Library Ø sudo apt-get update Ø sudo apt-get install build-essential python-dev python-smbus git Ø cd ~ Ø git clone https://github.com/adafruit/Adafruit_Python_MCP3008.git Ø cd Adafruit_Python_MCP3008 Ø sudo python setup.py install 26

  27. Photocell Ø Measure Voltage drop depending on Lux Ø Resistance range: 200K Ω (dark) to 10K Ω (10 lux brightness) Ø Sensitivity range: Respond to light between 400nm (violet) and 600nm (orange) wavelengths, peaking at about 520nm (green). Ø Power supply: Up to 100V § uses less than 1mA of current on average 27

  28. Connect Photocell 28

  29. Run existing code Ø cd ~/Adafruit_Python_MCP3008/examples/ Ø Change the simpletest.py code to enable Hardware SPI and disable Software SPI Ø Then run the simpletest.py 29

  30. Output of simpletest.py Ø Why are there values in unused channels? Ø What can be the range of values in the used channel? 30

  31. Connect Temperature Sensor 31

  32. Kernel and User Space ioctl() 32

  33. SPI Bus on Linux Ø lsmod | grep spi Ø modprobe spidev Ø modprobe spi_bcm2835 Ø dmesg | grep spi 33

  34. SPI Using User->Kernel Modules Ø ioctl § /usr/include/asm-generic/ioctl.h Ø spidev § /usr/include/linux/spi/spidev.h Ø Kernel Module § https://github.com/raspberrypi/linux/blob/rpi-3.12.y/drivers/spi/spi- bcm2835.c 34

  35. ioctl() – Input/Output Control Ø int ioctl(int fd , unsigned long request , ...); Ø The ioctl () system call manipulates the underlying device parameters of special files. Ø Input Arguments § fd – File Descriptor § request – Device dependent request code § Third Argument – Integer value of a pointer to data for transfer Ø Return § 0 on success. § -1 on error. 35

  36. spi_ioc_transfer structure 36

  37. SPI Dev Interface Ø https://www.kernel.org/doc/Documentation/spi/spidev Ø /dev/spidevB.C (B=bus, C=slave number). § On RPi it is /dev/spidev0.0 Ø To open the device: § fd=open("/dev/spidev0.0",O_RDWR); 37

  38. SPI Dev Interface Ø To set the mode: § int mode=SPI_MODE_0; § result = ioctl(spi_fd , SPI_IOC_WR_MODE , &mode); Ø To set the bit order: § int lsb_mode =0; § result = ioctl(spi_fd, SPI_IOC_WR_LSB_FIRST, &lsb_mode); 38

  39. SPI Dev Interface Ø To transfer: § ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr); Ø To close: § close(fd); 39

  40. MCP 3008 Data Transfer 40

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend