Dear all,
I'm developing the FreeCopter project using ChibiOS on STM32F1, and I'd like to share with you the code also because I succeed to build an SPI Master/Slave communication... could be interesting for someone because there is no official support for the SPI SLAVE in Chibios.
The code is on GITHUB:
https://github.com/formica-multiuso/freecopter-imu
https://github.com/formica-multiuso/freecopter-control
The 'freecopter-control' software provide a ChibiOS patch to implement SPI Slave (chibios_patch folder).
The software is intended to work on a custom board about which I will publish as soon as possible.
Regards
Roberto
Project FreeCopter (aka an example for ChibiOS SPI SLAVE)
Re: Project FreeCopter (aka an example for ChibiOS SPI SLAVE
Here the patch to use SPI in slave mode on the STM32F1x (but I think should work alson on F4).
Code: Select all
--- spi_lld.c 2012-06-18 19:14:28.000000000 +0200
+++ /home/formica/chibios/chibios/os/hal/platforms/STM32/spi_lld.c 2013-04-10 12:21:44.096847872 +0200
@@ -294,10 +294,16 @@
}
/* SPI setup and enable.*/
spip->spi->CR1 = 0;
+ #if !defined(STM32_SPI_SLAVE_MODE)
spip->spi->CR1 = spip->config->cr1 | SPI_CR1_MSTR | SPI_CR1_SSM |
SPI_CR1_SSI;
spip->spi->CR2 = SPI_CR2_SSOE | SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN;
spip->spi->CR1 |= SPI_CR1_SPE;
+ #else
+ spip->spi->CR1 = spip->config->cr1 | SPI_CR1_RXONLY; //| SPI_CR1_DFF;
+ spip->spi->CR2 = SPI_CR2_RXDMAEN; //| SPI_CR2_RXNEIE;
+ spip->spi->CR1 |= SPI_CR1_SPE;
+ #endif
}
/**
- Giovanni
- Site Admin
- Posts: 14891
- Joined: Wed May 27, 2009 8:48 am
- Has thanked: 1202 times
- Been thanked: 996 times
Re: Project FreeCopter (aka an example for ChibiOS SPI SLAVE
Hi,
Thanks for the patch, some may need that. The current SPI driver model is not meant to be a slave SPI so it can't be merged in this moment.
The general idea is to have a specific SPI-slave driver at some point.
Giovanni
Thanks for the patch, some may need that. The current SPI driver model is not meant to be a slave SPI so it can't be merged in this moment.
The general idea is to have a specific SPI-slave driver at some point.
Giovanni