Mir sind folgende BLE Controller mit Dual Core bekannt: - ST WB55 - NRF53 - ESP32-S3 (und andere Varianten) In meiner Applikation habe ich einen ADC einer Datenrate von 1kHz - 10kHz, daher fallen Controller mit managed Interrupts wie NRF52 raus (der BLE Stack könnte zu lange blockieren). Daher suche ich BLE Controller mit Dual Core. Beim ST hat man volle Kontrolle über den Application Core, aber bei den NRF53 und ESP32 Dual Cores finde ich keine Dokumentation, darüber ob die Applikation in einer Sandbox läuft oder nicht. Für den NRF52 habe ich die zugehörige Doku über das Softdevice gefunden, aber wo ist die zugehörige Doku für den NRF53?
Vielleicht einer der Cypress/Infineon PSOC (4) controllers ?
PSoC 63 ist ein dual core (MR und M0+) mit BLE. Bei dem man beide cores frei programmieren kann. PSoC4 ist "nur" ein single core M0, wobei ich mich Frage was in der ADC ISR passieren soll, damit der nicht reicht.
Die STM32WBs sind sicher gute Drivate, jedoch habe ich als Laie es nicht hinbekommen das BLE zu verwenden. Die Dokumentation ist ziemlich verworren und unübersichtlich, sowie umfangreich.
Robin schrieb: > PSoC 63 ist ein dual core (MR und M0+) mit BLE. Bei dem man beide > cores > frei programmieren kann. Das geht wohl bei den ESP32 dual cores auch, aber das freie Programmieren von dem 2. Core (also der angenommene für BLE) erzwingt soweit ich weiß eine Sandbox, ansonsten kann das nicht vom Hersteller für beliebige Applikationen zertifiziert sein? Bei den STWB55 läuft auf dem Network Core wirklich nur BLE, das gefällt mir besser. Dadurch entwickelt man auch gar nicht für einen Dual Core, sondern quasi für einen Single Core mit spezieller Peripherie.
ble schrieb: > In meiner Applikation habe ich einen ADC einer Datenrate von 1kHz - > 10kHz, daher fallen Controller mit managed Interrupts wie NRF52 raus > (der BLE Stack könnte zu lange blockieren). Daher suche ich BLE > Controller mit Dual Core. Verwende einfach DMA, dann sollte es doch überhaupt kein Problem geben, die 10k samples vom ADC abzuholen. > Für den NRF52 habe ich die zugehörige Doku über das Softdevice gefunden, > aber wo ist die zugehörige Doku für den NRF53? Spannend, habe ich auch nicht gefunden. Vielleicht gibt es kein SD und die Verwendung von Zephyr ist vorgesehen. Der CC2640 von TI hat eine Cortex M3 plus einen eigenen Radio-Controller. Die Software-Entwicklung macht in dem Bereich aber echt keinen Spaß.
ble schrieb: > Das geht wohl bei den ESP32 dual cores auch, aber das freie > Programmieren von dem 2. Core (also der angenommene für BLE) erzwingt > soweit ich weiß eine Sandbox, ansonsten kann das nicht vom Hersteller > für beliebige Applikationen zertifiziert sein? Mein Stand hierzu ist, dass die Module nur den BLE Stack und die BLE Hardware Implementierung (Transceiver, Antenne, ...) zertifiziert haben, die Application muss aber meines Wissens immer selbst zertifiziert werden. > Bei den STWB55 läuft auf dem Network Core wirklich nur BLE, das gefällt > mir besser. Dadurch entwickelt man auch gar nicht für einen Dual Core, > sondern quasi für einen Single Core mit spezieller Peripherie. Dafür gibt es beim PSoC6 auch ein fertiges Image für den M0+, der den BLE LowLevel kram übernimmt, auf dem CM4 Core werden dann die BLE Profile gehandelt. Ist dann auch quasi Single Core. https://github.com/Infineon/psoc6cm0p/tree/master/COMPONENT_CM0P_BLESS Ich sehe aber auch noch nicht wirklich den Anwendungsfall für einen Dual Core, 1-10kHz ist jetzt nicht wirklich schnell.
ble schrieb: > aber wo ist die zugehörige Doku für den NRF53? Hier steht der Hinweis, dass die Softdevices gleich sind NRF52/53. https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_ble_controller.html#id2 Wenn du da dem Link zur Documentation folgst sollte doch alles da sein? Da kommt dann, links im Menu "Softdevice Controller->Scheduling". Da sollte dir doch geholfen werden?
Danke für die Vorschläge soweit. Was mir erst jetzt in den Sinn kommt: Kann ich bei den frei programmierbaren Dualcores (Psoc, ESP32, NRF53) einstellen, dass die BLE Interrupts auf Core0 und mein DRDY Interrupt gleichzeitig auf Core1 läuft? Dann hätte sich das Problem ja erübrigt. Meine Befürchtung war, dass der BLE Stack wahllos um 100µs alle Interrupts blockieren kann (wie bei BLE Singlecore Modulen).
ble schrieb: > Kann ich bei den frei programmierbaren Dualcores (Psoc, ESP32, NRF53) > einstellen, dass die BLE Interrupts auf Core0 und mein DRDY Interrupt > gleichzeitig auf Core1 läuft? davon würde ich sehr stark ausgehen. > Dann hätte sich das Problem ja erübrigt. Meine Befürchtung war, dass der > BLE Stack wahllos um 100µs alle Interrupts blockieren kann (wie bei BLE > Singlecore Modulen). Was sind den genau Deine Befürchtungen / Anforderungen? Ich kann mir beim besten Willen nicht vorstellen, warum der BLE Stack 100µs lang alle Interrupts blockieren sollte. In der Regel werden das ein paar µs sein. Und wie gesagt: die meisten µCs haben DMA.
Torsten R. schrieb: > Was sind den genau Deine Befürchtungen / Anforderungen? Ich kann mir > beim besten Willen nicht vorstellen, warum der BLE Stack 100µs lang alle > Interrupts blockieren sollte. In der Regel werden das ein paar µs sein. > Und wie gesagt: die meisten µCs haben DMA. Wenn man hier https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsds_s140%2FSDS%2Fs1xx%2Fprocessor_avail_interrupt_latency%2Fexception_mgmt_sd.html das softdevice runterlädt, findet man z.B. auf Seite 89, dass der bei einem Connect Event der BLE Stack bis zu 250µs für das Postprocessing braucht. Das läuft im Softdevice timing-critical interrupt, solange läuft da nichts von der Userapplikation. Das ganze gilt für einen NRF5X Singlecore. DMA ist natürlich gut, aber wenn ich die ADC Daten auch live verarbeiten möchte muss der DMA (oder mit weiterem Peripheral): - automatisch Transfer triggern bei DRDY interrupt - Memoryaddresse nach jedem Transfer ändern können Das können manche, aber denke ich nicht alle Mikrocontroller. Die Anforderung ist, dass ich in Echtzeit (also höchste Interruptpriorität) alle 100µs einen DMA transfer starten kann. Wenn der Controller/DMA das automatisch kann, entfällt die Echtzeitanforderung.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.