Forum: Mikrocontroller und Digitale Elektronik Frage zum HCI bie Bluetooth


von Polizeirat Becker (Gast)


Lesenswert?

Hallo,

ich habe eine Frage zum HCI (Host Controller Interface) beim Bluetooth 
Stack.

"Communication between the controller and host is standardized as 
Hardware Controller Interface (HCI) over UART, USB or SDIO physical 
layer interface. It makes the controller and host vendor agnostic and 
allows you to mix and match controller and host implementations from 
different vendors."

Bedeutet das, dass der Controller (bspw: ein Cortex M0?) mit dem Host 
über eine Schnittstelle verbunden ist. Das bedeutet, dass der Host, was, 
so wie ich das verstehe, die Luftschnittstelle abbildet. Das heißt da 
steck der Verstärker und sonstiges drin. Das heißt der Host ist in 
Hardware gegossen? Ist das dann auf einem CHip implementiert? Hat jemand 
vllt dazu mal ein Bild?

Weiterhin heißt es wie folgt:
"Alternatively, controller and host parts may be collocated and not need 
HCI implementation in that case. In this approach, a complete Bluetooth 
SoC often runs customer applications as well, and the chip provides 
required peripherals."

Das wäre dann in einen Chip gegossen, oder? Wäre das dann ein komplettes 
Bluetooth-Modul wie dieses hier 
(https://www.insightsip.com/products/bluetooth-smart-modules/isp1302)?
Dort ist ein nrf51822 verbaut. Antenne und alles ist im Modul enthalten. 
Wird da ein HCI benötigt?

Ich versteh es nicht :)

von Jim M. (turboj)


Lesenswert?

Polizeirat Becker schrieb:
> Dort ist ein nrf51822 verbaut. Antenne und alles ist im Modul enthalten.
> Wird da ein HCI benötigt?

Nö. Das ist ein Cortex-M0 mit direktem Anschluss an ein Bluetooth Lown 
Energy Radio auf einem Chip. Auf dem µC läuft ein propritärer Software 
Stack von NordicSemi, der dem Programmierer das Bluetooth Handling zu 
großen Teilen abnimmt.


HCI haben beispielsweise die Bluetooth-2-USB Adapter, die so mit einem 
generischen Treiber laufen können.

von Polizeirat Becker (Gast)


Lesenswert?

Jim M. schrieb:
> Nö. Das ist ein Cortex-M0 mit direktem Anschluss an ein Bluetooth Lown
> Energy Radio auf einem Chip. Auf dem µC läuft ein propritärer Software
> Stack von NordicSemi, der dem Programmierer das Bluetooth Handling zu
> großen Teilen abnimmt.

Und wann wird ein HCI benötigt?

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Polizeirat Becker schrieb:

> Und wann wird ein HCI benötigt?

HCI ist der Versuch, bei einer Trennung zwischen Radio-Hardware und 
Host, einen gewissen Standard vorzugeben. Im embedded Bereich wird das 
aber immer weniger verwendet.

Verwendung findet das in der Regel bei BLE USB Sticks. Die sprechen dann 
tatsächlich HCI über USB mit dem angeschlossenem PC.

von Polizeirat Becker (Gast)


Lesenswert?

Torsten R. schrieb:
> HCI ist der Versuch, bei einer Trennung zwischen Radio-Hardware und
> Host, einen gewissen Standard vorzugeben. Im embedded Bereich wird das
> aber immer weniger verwendet.
>
> Verwendung findet das in der Regel bei BLE USB Sticks. Die sprechen dann
> tatsächlich HCI über USB mit dem angeschlossenem PC.

Ich glaube ich verstehe. Da ist der PC der Controller und die Hardware 
auf dem USB-Stick ist dann der Controller für das Radio-Interface?

https://s.zeptobars.com/nRF51822-HD.jpg

Das ist ein Foto vom Die des nrf51822. Da das Radio-Interface direkt im 
Chip integriert ist, benötige ich also kein HCI, weil ich quasi 
chipintern kommuniziere. Richtig?

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Polizeirat Becker schrieb:
> Das ist ein Foto vom Die des nrf51822. Da das Radio-Interface direkt im
> Chip integriert ist, benötige ich also kein HCI, weil ich quasi
> chipintern kommuniziere. Richtig?

Jep! Im Fall des nrf51/52 bekommst Du eine API, gegen die Du 
entwickelst.

von Jim M. (turboj)


Lesenswert?

Polizeirat Becker schrieb:
> Und wann wird ein HCI benötigt?

Für die Nordic Cortex-Mx Chips gibt es auch HCI-ähnliche Firmware - und 
ein PC Programm  (in Python geschrieben) das via UART/Serieller 
Schnittstelle mit jenem µC kommuniziert.

Damit kann man dann einen BT LE Sniffer bauen oder OTA Firmware Updates 
fahren.

Braucht man z.B. zwingend unter Windows 7, da das selber kein BT Low 
Energy unterstützt.

von Polizeirat Becker (Gast)


Lesenswert?

Torsten R. schrieb:
>> Das ist ein Foto vom Die des nrf51822. Da das Radio-Interface direkt im
>> Chip integriert ist, benötige ich also kein HCI, weil ich quasi
>> chipintern kommuniziere. Richtig?
>
> Jep! Im Fall des nrf51/52 bekommst Du eine API, gegen die Du
> entwickelst.

Also die werden intern wohl auch irgendwie zwischen den Funkinterface 
und dem eigentlichen µC kommunizieren, aber das passiert ja dann über 
den AHB oder ähnliches. Also gibt es dort im Prinzip auch einen kleinen 
HCI, aber anscheind nicht so im klassischen Sinne?

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Polizeirat Becker schrieb:

> Also die werden intern wohl auch irgendwie zwischen den Funkinterface
> und dem eigentlichen µC kommunizieren, aber das passiert ja dann über
> den AHB oder ähnliches. Also gibt es dort im Prinzip auch einen kleinen
> HCI, aber anscheind nicht so im klassischen Sinne?

Die haben ein Softdevice (das ist ein image / Programmcode an fester 
Adresse) über das die mitgelieferten Bilbliotheken über 
Software-Interrupts kommunizieren. Das Softdevice selbst kommuniziert 
dann mit der Radio-Hardware über Register und Interrupts, wie mit jedem 
anderen Peripheral. Ja, und die Kommunikation über Register läuft dann 
über irgend ein ARM-Bus-System.

Im Quellcode kannst Du Dir das z.B. bei 
https://github.com/zephyrproject-rtos/zephyr (C) oder 
https://github.com/TorstenRobitzki/bluetoe (C++) angucken.

Mit HCI würde ich das nicht vergleichen wollen. Bei HCI habe ich eher 
das Gefühl, da hat einer ein System an der dicksten Stelle getrennt um 
da eine Schnittstelle einzuziehen. :-)

mfg Torsten

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.