Now studying #BL602 SPI ... Can't wait to get #PineCone driving ST7789 with #LVGL!
https://github.com/bouffalolab/bl_docs/tree/main/BL602_RM/en
#BL602 uses the new SPI Pin Names ... No more MOSI and MISO 👍
https://github.com/bouffalolab/bl_docs/tree/main/BL602_RM/en
...Wait it's still using the old terms. Should be renamed as "Controller" and "Peripheral", according to the guidelines:
https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/
#BL602 SPI Registers are remarkably similar to I2C Registers ... So I can reuse my I2C code for SPI 🤔
https://github.com/bouffalolab/bl_docs/tree/main/BL602_RM/en
Yep #BL602 SPI is copy pasta from I2C ... Even the Register Address. Very nice! 👍
https://github.com/bouffalolab/bl_docs/tree/main/BL602_RM/en
We'll let #BL602 talk simple SPI to BME280 first ... Before talking seriously to ST7789
https://cdn.sparkfun.com/assets/learn_tutorials/4/1/9/BST-BME280_DS001-10.pdf
#BL602 SPI DMA ... Lets you specify a Linked List of Transmit / Receive operations ... That will be executed by the DMA Controller
https://github.com/lupyuen/bl_iot_sdk/blob/master/components/hal_drv/bl602_hal/hal_spi.c#L115
#BL602 SPI DMA uses simple Interrupt Handlers .... Simpler than I2C! Let's experiment with SPI DMA on BME280
https://github.com/lupyuen/bl_iot_sdk/blob/spi/components/hal_drv/bl602_hal/hal_spi.c#L749-L794
#BL602 SPI DMA is used by AliOS VFS file system ... Which is bundled with the BL602 IoT SDK
https://pine64.github.io/bl602-docs/Components/Middleware/vfs/vfs.html
But if AliOS is really a complete Embedded Operating System ... Why does #BL602 IoT SDK still need FreeRTOS? 🤔
#BL602 SPI Functions are the same as AliOS ... Time to practice my Chinese reading skills
https://help.aliyun.com/document_detail/161063.html?spm=a2c4g.11186623.6.576.391045c4bGoNKS
...But #BL602 SPI HAL doesn't implement all AliOS SPI Functions 🤔
https://github.com/lupyuen/bl_iot_sdk/blob/spi/components/hal_drv/bl602_hal/hal_spi.c#L368
Init the #BL602 SPI Port ... Looks easy
https://github.com/lupyuen/bl_iot_sdk/blob/spi/customer_app/sdk_app_spi/sdk_app_spi/demo.c#L41-L58
Nope #BL602 it's a trap! Should call "vfs_spi_init_fullname" to init the SPI port
https://github.com/lupyuen/bl_iot_sdk/blob/spi/components/hal_drv/bl602_hal/hal_spi.c#L504-L571
Another #BL602 trap! "vfs_spi_init_fullname" doesn't return the SPI Device ... It passes the SPI Device to AliOS! Let's create our own function to init the SPI Port without AliOS 🤔
https://github.com/lupyuen/bl_iot_sdk/blob/spi/components/hal_drv/bl602_hal/hal_spi.c#L504-L571
Init #BL602 SPI Port ... No more traps!
https://github.com/lupyuen/bl_iot_sdk/blob/spi/customer_app/sdk_app_spi/sdk_app_spi/demo.c#L42-L69
#BL602 SPI Data Transfer needs a "void *" parameter ... Which is cast to an "spi_ioc_transfer_t" ... That belongs to AliOS 😭
https://github.com/lupyuen/bl_iot_sdk/blob/spi/components/hal_drv/bl602_hal/hal_spi.c#L464-L502
Good Sunday Morning #PineCone #BL602 @PINE64 ... And #BME280 on SPI! Yep this looks right 👍
https://github.com/lupyuen/bl_iot_sdk/blob/spi/customer_app/sdk_app_spi/sdk_app_spi/demo.c#L49-L70
#BL602 SPI Transmit and Receive ... Hope this works 🤔
https://github.com/lupyuen/bl_iot_sdk/blob/spi/customer_app/sdk_app_spi/sdk_app_spi/demo.c#L72-L102
When do you sleep?
@aton Heh heh I'm in the wrong timezone ... GMT+8 (Singapore)
#BL602 SPI Register Fields look similar to I2C too
https://github.com/bouffalolab/bl_docs/tree/main/BL602_RM/en