Skip to content
Snippets Groups Projects
Commit 4feecd90 authored by bence98's avatar bence98
Browse files

Protokoll leírás: 1-es és 2-es bRequest

parent 677bcdbe
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@
\usepackage[utf8]{inputenc}
\usepackage[hyphens]{url}
\usepackage{graphicx}
\usepackage{hhline}
%\usepackage[magyar]{babel}
\usepackage{amssymb}
......@@ -144,7 +145,7 @@ Az FPGA konfiguráció fájlok (Serial Vector Format, SVF) kezeléséhez szüks
\section{Logsys USB kommunikációs protokoll} \label{sec:LS USB}
Az LDC USB-azonosítója (Vendor ID : Product ID) \textit{03eb:f0ff}. Az USB eszköz két interfészt tartalmaz: a 0. interfészen található egy OUT/IN endpoint-pár (0x01, 0x82) a JTAG és SPI adatok átvitelére, illetve egy másik endpoint-pár (0x03 és 0x84) az I\textsuperscript{2}C és BitBang I/O átvitelekhez. Az 1. interfészen található az USART átvitel OUT/IN endpoint-párja (0x05 és 0x86). Ennek a kiosztásnak technikai okai vannak, amiről részletesebben Raikovich Tamás diplomatervének \cite{RT-dipterv} "8.2 A funkciók megvalósítása" fejezetében olvashatunk.
A legtöbb funkció Control blokkal vezérelhető. Az adatátvitelek az USART IN (0x86) végpontját kivéve (ami Interrupt transzfert használ) Bulk átvitelekkel történik. Lejjebb leírom az egyes funkciókat és az őket megvalósító URB-ket.
A legtöbb funkció gyártóspecifikus Control kódokkal vezérelhető. Az adatátvitelek az USART IN (0x86) végpontját kivéve (ami Interrupt transzfert használ) Bulk átvitelekkel történik. Lejjebb leírom az egyes funkciókat és az őket megvalósító URB-ket.
Amennyiben a kérés valamilyen struktúrát vár/ad vissza, azt egy ofszet$\rightarrow$mező táblázattal jelzem, majd az egyes mezők leírása következik. A táblázatban a bitmezőket "(abcd efgh)" alakban reprezentálom.
......@@ -154,7 +155,7 @@ A saját implementációm hivatkozásánál a fájlok nevei és a sorszámok a k
\subsubsection{Státusz lekérése}
A Logsys GUI működése közben figyeli az LDC állapotleíróit (kimeneti feszültségek, kifolyó áram, túláram védelem bitje stb.), ezeket az információkat másodpercenként többször is lekérdezi az eszköztől.
\textbf{URB Control blokk:}\\
\noindent\textbf{URB Control blokk:}\\
\begin{tabular}{|l|l|}
\hline
irány & IN\\ \hline
......@@ -187,13 +188,59 @@ A kérés egy struktúrát ad vissza, aminek a formátuma a következő:\\
\item E\textsubscript{1}, E\textsubscript{2}: A 0. interfész két endpoint-párjának foglaltsága
\end{itemize}
\textbf{Implementáció}
\noindent\textbf{Implementáció}
\begin{itemize}
\item Státusz lekérdezése: \texttt{logsys\_tx\_get\_status} függvény (\textit{src/shared/control.c:7})
\item Struktúra kiosztása: \texttt{LogsysStatus} struct (\textit{include/logsys/common.h:16})
\item Struktúra kiosztása: \texttt{struct LogsysStatus} (\textit{include/logsys/common.h:16})
\item Struktúra feldolgozása: \textit{include/logsys/status.h} által definiált interfész (\textit{src/shared/status.c})
\end{itemize}
\subsubsection{Tápfeszültség vezérlése}
A tápfeszültséget lehet be- illetve kikapcsolni, a túláram- és visszáram védelmi rendszer küszöbeit lekérdezni és átállítani. Ezek a funkciók mind a bRequest=2 kéréstípusba tartoznak.
Tápfeszültség állapota:
\noindent\textbf{URB Control blokk:}\\
\begin{tabular}{|l|l|l|}
\hline
\textit{Művelet} & \textit{Lekérdezés} & \textit{Beállítás}\\ \hhline{|=|=|=|}
irány & IN & OUT\\ \hline
bRequest & 2 & 2\\ \hline
wValue & 0 & kívánt állapot\\ \hline
wIndex & 0 & 0\\ \hline
hossz & 1 & 0\\ \hline
\end{tabular}
Az IN kérés egy egybájtos logikai értéket (bool) ad vissza.
\noindent\textbf{Implementáció}
\begin{itemize}
\item Lekérdezés: \texttt{logsys\_tx\_get\_vcc} (\textit{include/logsys/control.h:35}, implementáció: \textit{src/shared/control.c:50})
\item Állítás: \texttt{logsys\_tx\_set\_vcc} (\textit{include/logsys/control.h:35}, Implementáció: \textit{src/shared/control.c:50})
\end{itemize}
Túláramvédelem:
\noindent\textbf{URB Control blokk:}\\
\begin{tabular}{|l|l|l|l|l|}
\hline
\textit{Művelet} & \textit{Lekérdezés} & \textit{Beállítás 450 mA-ra} & \textit{Beállítás 700 mA-ra} & \textit{Beállítás 950 mA-ra}\\ \hhline{|=|=|=|=|=|}
irány & IN & OUT & OUT & OUT\\ \hline
bRequest & 2 & 2& 2& 2\\ \hline
wValue & 0x0100 & 0x0100 & 0x0101 & 0x0102\\ \hline
wIndex & 0 & 0 & 0 & 0\\ \hline
hossz & 1 & 0 & 0 & 0\\ \hline
\end{tabular}
Az IN kérés egy 0-2 közötti számot ad vissza, ami a 450, 700 illetve 950 mA-es küszöböt jelenti. Ezeket egy enumerációba gyűjtöttem a kezelhetőség javításának érdekében.
\noindent\textbf{Implementáció}
\begin{itemize}
\item Lekérdezés: \texttt{logsys\_tx\_get\_pwr\_limit} (\textit{include/logsys/control.h:22}, implementáció: \textit{src/shared/control.c:31})
\item Állítás: \texttt{logsys\_tx\_set\_pwr\_limit} (\textit{include/logsys/control.h:24}, Implementáció: \textit{src/shared/control.c:38})
\item Enumeráció: \texttt{enum LogsysPwrLimit} (\textit{include/logsys/common.h:30})
\end{itemize}
\pagebreak
\begin{thebibliography}{Források}
\bibitem{LS-beagy-fejl} LOGSYS – Beágyazott rendszerek fejlesztői környezete\\
......
......@@ -20,7 +20,7 @@
%--------------------------------------------------------------------------------------
% TDK-specifikus változók
%--------------------------------------------------------------------------------------
\newcommand{\tdkszerzoB}{} % Második szerző neve; hagyd üresen, ha egyedül írtad a TDK-t.
\newcommand{\tdkszerzoB}{~} % Második szerző neve; hagyd üresen, ha egyedül írtad a TDK-t.
\newcommand{\tdkev}{2019} % A dolgozat írásának éve (pl. "2014") (Ez OTDK-nál eltérhet az aktuális évtől.)
% További adatok az OTDK címlaphoz (BME-s TDK-hoz nem kell kitölteni)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment