some cleaning

master
Ondřej Hruška 7 years ago
parent fd5684ad86
commit 8b496a5c0c
Signed by: MightyPork
GPG Key ID: 2C5FD5035250423D
  1. 3
      ch.discussion.tex
  2. 2
      ch.hw_functions.tex
  3. 2
      ch.introduction.tex
  4. 2
      ch.summary.tex
  5. 18
      ch.unit.adc.tex
  6. 2
      ch.usb.tex
  7. 3
      document_config.tex
  8. 66
      thesis.acronyms.tex
  9. 3
      thesis.bib
  10. BIN
      thesis.pdf
  11. 4
      thesis.tex

@ -0,0 +1,3 @@
\chapter{Discussion}
\todo[inline]{TODO}

@ -4,7 +4,7 @@ In addition to communication buses, described in \cref{ch:hw_buses}, GEX impleme
\section{Frequency Measurement} \label{sec:theory_fcap} \section{Frequency Measurement} \label{sec:theory_fcap}
Applications like motor speed measurement and the reading of a \gls{VCO} or \gls{VCO}-based sensor's output demand a tool capable of measuring frequency. This can be done using a laboratory instrument such as the Agilent 53131A. A low-cost solution can be realized using a timer/counter peripheral of a microcontroller. Applications like motor speed measurement or the use of sensors with \gls{PWM} output demand a tool capable of measuring frequency (and the duty cycle) of a signal. This can be done using laboratory instruments such as the Agilent 53131A. A low-cost solution can be realized using a timer/counter microcontroller peripheral.
\noindent \noindent
Two basic methods to measure frequency exist~\cite{fcap-twotypes}, each with its advantages and drawbacks: Two basic methods to measure frequency exist~\cite{fcap-twotypes}, each with its advantages and drawbacks:

@ -30,7 +30,7 @@ Our project is not meant to end with a tinkering tool that will be produced in a
\end{figure} \end{figure}
\fi \fi
Building on the experience with earlier embedded projects, an STM32 microcontroller shall be used. Those are \armcm devices with a wide range of hardware peripherals that appear be a good fit for the project. Low-cost evaluation boards are widely available that could be used as a hardware platform instead of developing a custom \gls{PCB}. STM32 microcontrollers are relatively cheap and already popular in the embedded hardware community; there is a real possibility of the project gathering a community around it and growing beyond what will be presented in this paper. Building on the experience with earlier embedded projects, an STM32 microcontroller will be used. Those are \armcm devices with a wide range of hardware peripherals that appear be a good fit for the project. Low-cost evaluation boards are widely available that could be used as a hardware platform instead of developing a custom \gls{PCB}. STM32 microcontrollers are relatively cheap and already popular in the embedded hardware community; there is a real possibility of the project gathering a community around it and growing beyond what will be presented in this paper.
\iffalse \iffalse
Besides the use of existing development boards, custom \glspl{PCB} will be developed in different form factors. The possibilities of wireless connection should be evaluated. This feature should make GEX useful for instance in mobile robotics or when installed in poorly accessible locations. Besides the use of existing development boards, custom \glspl{PCB} will be developed in different form factors. The possibilities of wireless connection should be evaluated. This feature should make GEX useful for instance in mobile robotics or when installed in poorly accessible locations.

@ -1,4 +1,4 @@
\chapter{Conclusion} \chapter{Summary}
We developed an open source software and hardware platform providing access to low-level hardware buses and circuitry from user applications running on a \gls{PC}. The platform consists of an embedded firmware for the STM32F072 microcontroller, three hardware prototypes (two models of a \gls{GPIO} module, and a wireless gateway), and software libraries in programming languages C and Python. The Python library can be used in MATLAB scripts through the MATLAB/Python integration, or directly in Python, with the SciPy scientific calculations library. The firmware may be used with STM32 Discovery development boards, and can be relatively easily ported to other STM32 \gls{MCU} models. We developed an open source software and hardware platform providing access to low-level hardware buses and circuitry from user applications running on a \gls{PC}. The platform consists of an embedded firmware for the STM32F072 microcontroller, three hardware prototypes (two models of a \gls{GPIO} module, and a wireless gateway), and software libraries in programming languages C and Python. The Python library can be used in MATLAB scripts through the MATLAB/Python integration, or directly in Python, with the SciPy scientific calculations library. The firmware may be used with STM32 Discovery development boards, and can be relatively easily ported to other STM32 \gls{MCU} models.

@ -89,16 +89,16 @@ avg_factor=500
\\ \\
2 & \cname{READ\_CAL\_CONSTANTS} 2 & \cname{READ\_CAL\_CONSTANTS}
Read factory calibration constants from the \gls{MCU}'s \gls{ROM} Read factory calibration constants from the \gls{MCU}'s \gls{ROM}. These are used to calculate real voltage or temperature from the ADC output word. The formulas can be found in Section 13.9 of the STM32F0~reference manual~\cite{f072-rm}.
& &
\begin{cmdresp} \begin{cmdresp}
\cfield{u16} V$_\mathrm{REF\_INT}$ voltage (raw ADC word) \cfield{u16} VREFINT\_CAL (word)
\cfield{u16} ADC reference voltage (mV) during V$_\mathrm{REF\_INT}$ measurement \cfield{u16}~VREFINT\_CAL\_VDD~(mV)
\cfield{u16} Temperature sensor voltage in point 1 (raw ADC word) \cfield{u16} TS\_CAL1 (word)
\cfield{u16} Temperature sensor voltage in point 2 (raw ADC word) \cfield{u16} TS\_CAL2 (word)
\cfield{u16} Temperature in point 1 (°C) \cfield{u16} TS\_CAL1\_T (°C)
\cfield{u16} Temperature in point 2 (°C) \cfield{u16} TS\_CAL2\_T (°C)
\cfield{u16} ADC reference voltage (mV) during temp. sensor calibration \cfield{u16} TS\_CAL\_VDD (mV)
\end{cmdresp} \end{cmdresp}
\\ \\
@ -165,7 +165,7 @@ avg_factor=500
\\ \\
26 & \cname{STREAM\_START} 26 & \cname{STREAM\_START}
Start a real-time stream of samples Start a continuous stream of samples
& \\ & \\
27 & \cname{STREAM\_STOP} 27 & \cname{STREAM\_STOP}

@ -92,7 +92,7 @@ The \gls{MSC} specification~\cite{usbif-msco} defines multiple \textit{transport
For the mass storage device to be recognized by the host operating system, it must also implement a \textit{command set}. Most mass storage devices use the \textit{\gls{SCSI} Transparent command set} For the mass storage device to be recognized by the host operating system, it must also implement a \textit{command set}. Most mass storage devices use the \textit{\gls{SCSI} Transparent command set}
\footnote{To confirm this assertion, the descriptors of five thumb drives and an external hard disk were analyzed using \verb|lsusb|. All but one device used the SCSI command set, one (the oldest thumb drive) used \textit{SFF-8070i}. A list of possible command sets can be found in~\cite{usbif-msco}}. \footnote{To confirm this assertion, the descriptors of five thumb drives and an external hard disk were analyzed using \verb|lsusb|. All but one device used the SCSI command set, one (the oldest thumb drive) used \textit{SFF-8070i}. A list of possible command sets can be found in~\cite{usbif-msco}}.
Unfortunately, the \gls{SCSI} Transparent command set appears to have been deliberately left unspecified for license or copyright reasons (see discussion in~\cite{usb-tscsi-wtf} and the surrounding thread) and the protocol now used under this name is an industry standard without a clear definition. Some pointers may be found in~\cite{usb-tscsi} and by examining the source code of the USB Device driver library provided by ST Microelectronics. Unfortunately, the \gls{SCSI} Transparent command set appears to have been deliberately left unspecified for license or copyright reasons (see discussion in~\cite{usb-tscsi-wtf} and the surrounding thread) and the protocol presently used under this name is an industry standard without a clear definition. Some pointers may be found in~\cite{usb-tscsi} and by examining the source code of the USB Device driver library provided by ST Microelectronics.
This command set lets the host read information about the attached storage device, such as its capacity, and check for media presence and readiness to write or detach. This is used, e.g., for the ``Safely Remove'' function, which ensures that all internal buffers have been written to the flash memory. This command set lets the host read information about the attached storage device, such as its capacity, and check for media presence and readiness to write or detach. This is used, e.g., for the ``Safely Remove'' function, which ensures that all internal buffers have been written to the flash memory.

@ -44,7 +44,8 @@
\usepackage[ \usepackage[
style=numeric, style=numeric,
backend=biber backend=biber,
sorting=none
]{biblatex} ]{biblatex}
% Uvozovky v češtině % Uvozovky v češtině

@ -1,6 +1,7 @@
% Buses and peripherals % Buses and peripherals
\newacronym{ADC}{ADC}{Analog/Digital Converter} \newacronym{ADC}{ADC}{analog/digital converter}
\newacronym{DAC}{DAC}{Digital/Analog Converter} \newacronym{DAC}{DAC}{digital/analog converter}
\newacronym{DDS}{DDS}{Direct Digital Synthesis} \newacronym{DDS}{DDS}{Direct Digital Synthesis}
\newacronym{SPI}{SPI}{Serial Peripheral Interconnect} \newacronym{SPI}{SPI}{Serial Peripheral Interconnect}
\newacronym{USART}{USART}{Universal Synchronous/Asynchronous Receiver/Transmitter} \newacronym{USART}{USART}{Universal Synchronous/Asynchronous Receiver/Transmitter}
@ -12,10 +13,8 @@
\newacronym{HART}{HART}{Highway Addressable Remote Transducer} \newacronym{HART}{HART}{Highway Addressable Remote Transducer}
\newacronym{LIN}{LIN}{Local Interconnect Network} \newacronym{LIN}{LIN}{Local Interconnect Network}
\newacronym{DALI}{DALI}{Digital Addressable Lighting Interface} \newacronym{DALI}{DALI}{Digital Addressable Lighting Interface}
\newacronym{DMA}{DMA}{Direct Memory Access} % ???
\newacronym{mbus}{M-Bus}{Meter Bus} \newacronym{mbus}{M-Bus}{Meter Bus}
\newacronym{STEM}{STEM}{Science, Technology, Engineering and Mathematics}
\newacronym{SSH}{SSH}{Secure Shell} \newacronym{SSH}{SSH}{Secure Shell}
\newacronym{NRZI}{NRZI}{Non Return to Zero Inverted} \newacronym{NRZI}{NRZI}{Non Return to Zero Inverted}
\newacronym{MSC}{MSC}{Mass Storage Class} \newacronym{MSC}{MSC}{Mass Storage Class}
@ -26,10 +25,8 @@
\newacronym{SCSI}{SCSI}{Small Computer System Interface} \newacronym{SCSI}{SCSI}{Small Computer System Interface}
\newacronym{IAD}{IAD}{Interface Association Descriptor} \newacronym{IAD}{IAD}{Interface Association Descriptor}
\newacronym{FAT}{FAT}{File Allocation Table} \newacronym{FAT}{FAT}{File Allocation Table}
\newacronym{FS}{FS}{file system}
\newacronym{IDE}{IDE}{integrated development environment}
\newacronym{LFN}{LFN}{Long File Name} \newacronym{LFN}{LFN}{Long File Name}
\newacronym{MBR}{MBR}{master boot record} \newacronym{MBR}{MBR}{Master Boot Record}
\newacronym{NVIC}{NVIC}{Nested Vectored Interrupt Controller} \newacronym{NVIC}{NVIC}{Nested Vectored Interrupt Controller}
\newacronym{GPS}{GPS}{Global Positioning System} \newacronym{GPS}{GPS}{Global Positioning System}
\newacronym{TWI}{TWI}{Two-Wire Interface} \newacronym{TWI}{TWI}{Two-Wire Interface}
@ -37,10 +34,13 @@
\newacronym{PMBus}{PMBus}{Power Management Bus} \newacronym{PMBus}{PMBus}{Power Management Bus}
\newacronym{DFU}{DFU}{Device Firmware Update} \newacronym{DFU}{DFU}{Device Firmware Update}
\newacronym{CPOL}{CPOL}{clock polarity} \newacronym{CPOL}{CPOL}{Clock Polarity}
\newacronym{CPHA}{CPHA}{clock phase} \newacronym{CPHA}{CPHA}{Clock Phase}
% Common names % Common names
\newacronym{IDE}{IDE}{integrated development environment}
\newacronym{FS}{FS}{file system}
\newacronym{STEM}{STEM}{science, technology, engineering and mathematics}
\newacronym{RMS}{RMS}{root mean square} \newacronym{RMS}{RMS}{root mean square}
\newacronym{PC}{PC}{personal computer} \newacronym{PC}{PC}{personal computer}
\newacronym{PCB}{PCB}{printed circuit board} \newacronym{PCB}{PCB}{printed circuit board}
@ -53,12 +53,10 @@
\newacronym{OS}{OS}{operating system} \newacronym{OS}{OS}{operating system}
\newacronym{API}{API}{application programming interface} \newacronym{API}{API}{application programming interface}
\newacronym{LED}{LED}{light emitting diode} \newacronym{LED}{LED}{light emitting diode}
\newacronym{MCU}{MCU}{microcontroller unit}
\newacronym{MCO}{MCO}{Microcontroller Clock Output} \newacronym{MCO}{MCO}{Microcontroller Clock Output}
\newacronym{RAM}{RAM}{random-access memory} \newacronym{NFC}{NFC}{Near-Field Communication}
\newacronym{ROM}{ROM}{read-only memory}
\newacronym{TTL}{TTL}{transistor-transistor logic} % Pin / Config Option names
\newacronym{RTS}{RTS}{Ready To Send} \newacronym{RTS}{RTS}{Ready To Send}
\newacronym{CTS}{CTS}{Clear To Send} \newacronym{CTS}{CTS}{Clear To Send}
\newacronym{SCK}{SCK}{Serial Clock} \newacronym{SCK}{SCK}{Serial Clock}
@ -66,26 +64,33 @@
\newacronym{MISO}{MISO}{Master In, Slave Out} \newacronym{MISO}{MISO}{Master In, Slave Out}
\newacronym{NSS}{NSS}{Negated Slave Select} \newacronym{NSS}{NSS}{Negated Slave Select}
\newacronym{DE}{DE}{Driver Enable} \newacronym{DE}{DE}{Driver Enable}
\newacronym{CSB}{CSB}{Chip Select Bar} \newacronym{CSB}{CSB}{Chip Select with Bar}
\newacronym{SS}{SS}{Slave Select} \newacronym{SS}{SS}{Slave Select}
\newacronym{SDA}{SDA}{Serial Data Line} \newacronym{SDA}{SDA}{Serial Data Line}
\newacronym{SCL}{SCL}{Serial Clock Line} \newacronym{SCL}{SCL}{Serial Clock Line}
\newacronym{DTR}{DTR}{Data Terminal Ready} \newacronym{DTR}{DTR}{Data Terminal Ready}
\newacronym{NDIR}{NDIR}{nondispersive infrared}
\newacronym{NFC}{NFC}{near-field communication}
\newacronym{RTC}{RTC}{real-time clock}
\newacronym{GND}{GND}{ground} \newacronym{GND}{GND}{ground}
\newacronym{TTL}{TTL}{Transistor-Transistor Logic}
\newacronym{NDIR}{NDIR}{nondispersive infrared}
\newacronym{CRC}{CRC}{cyclic redundancy check} \newacronym{CRC}{CRC}{cyclic redundancy check}
\newacronym{RTC}{RTC}{Real-Time Clock}
\newacronym{TSC}{TSC}{Touch Sensing Controller}
\newacronym{DMA}{DMA}{Direct Memory Access} % ???
\newacronym{VCO}{VCO}{voltage-controlled oscillator} \newacronym{VCO}{VCO}{voltage-controlled oscillator}
\newacronym{TCO}{TCO}{temperature-compensated oscillator} \newacronym{TCO}{TCO}{temperature-compensated oscillator}
\newacronym{NCO}{NCO}{numerically controlled oscillator} \newacronym{NCO}{NCO}{numerically controlled oscillator}
\newacronym{DC}{DC}{direct current} \newacronym{DC}{DC}{direct current}
\newacronym{SAR}{SAR}{successive approximation register} \newacronym{SAR}{SAR}{successive approximation register}
\newacronym{AC}{AC}{alternating current} \newacronym{AC}{AC}{alternating current}
\newacronym{TSC}{TSC}{Touch Sensing Controller}
\newacronym{ISR}{ISR}{interrupt service routine} \newacronym{ISR}{ISR}{interrupt service routine}
\newacronym{IRQ}{IRQ}{interrupt request} \newacronym{IRQ}{IRQ}{interrupt request}
\newacronym{MCU}{MCU}{microcontroller unit}
\newacronym{RAM}{RAM}{random-access memory}
\newacronym{ROM}{ROM}{read-only memory}
\newacronym{OOK}{OOK}{on-off keying} \newacronym{OOK}{OOK}{on-off keying}
\newacronym{FSK}{FSK}{frequency-shift keying} \newacronym{FSK}{FSK}{frequency-shift keying}
@ -93,9 +98,30 @@
\newacronym{MSK}{MSK}{minimum-shift keying} \newacronym{MSK}{MSK}{minimum-shift keying}
\newacronym{GMSK}{GMSK}{Gaussian minimum-shift keying} \newacronym{GMSK}{GMSK}{Gaussian minimum-shift keying}
\newacronym{BFSK}{BFSK}{binary frequency-shift keying} \newacronym{BFSK}{BFSK}{binary frequency-shift keying}
\newacronym{GSM}{GSM}{Global System for Mobile communications}
\newacronym{SCCB}{SCCB}{Serial Camera Control Bus} \newacronym{SCCB}{SCCB}{Serial Camera Control Bus}
\glsunset{UART} \newacronym{GSM}{GSM}{Global System for Mobile communications}
% --- pre-defined (not in text) ---
\glsunset{UART} % introduced together with USART
% those are used after introducing CDC/ACM, so their meaning is already clear
\glsunset{CDC} \glsunset{CDC}
\glsunset{ACM} \glsunset{ACM}
\glsunset{SCSI} % used only in one place and looks wrong
% obvious
\glsunset{AC}
%\glsunset{TTL}
%\glsunset{GND}
%\glsunset{API}
%\glsunset{LED}
\glsunset{DC}
%\glsunset{PC}
%\glsunset{OS}
%\glsunset{GPS}
\glsunset{GSM} % mentioned only once
%\glsunset{RAM}
%\glsunset{ROM}

@ -529,8 +529,7 @@
year={2008}, year={2008},
pages={1-70}, pages={1-70},
keywords={IEEE standards;floating point arithmetic;programming;IEEE standard;arithmetic formats;computer programming;decimal floating-point arithmetic;754-2008;NaN;arithmetic;binary;computer;decimal;exponent;floating-point;format;interchange;number;rounding;significand;subnormal}, keywords={IEEE standards;floating point arithmetic;programming;IEEE standard;arithmetic formats;computer programming;decimal floating-point arithmetic;754-2008;NaN;arithmetic;binary;computer;decimal;exponent;floating-point;format;interchange;number;rounding;significand;subnormal},
doi={10.1109/IEEESTD.2008.4610935}, doi={10.1109/IEEESTD.2008.4610935}
month={Aug},
} }

Binary file not shown.

@ -46,8 +46,10 @@
\input{ch.pc_software} \input{ch.pc_software}
\part{Results} \part{Results}
\input{ch.conclusion} \input{ch.discussion}
\input{ch.summary}
\newpage
\printbibliography \printbibliography
\input{thesis.appendices} \input{thesis.appendices}

Loading…
Cancel
Save