2012-12-09 05:41 AM
Hello,
I'm trying to get the MEMS Accelerometer on my STM32F4 Discovery Board to run with a simple code, but I don't make it. Heres my code: int main(void) { SystemInit(); GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOE , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); //Init SPI-Pins GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); //Init CS-Pin GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_SetBits(GPIOE, GPIO_Pin_3); //Set CS high GPIO_PinAFConfig (GPIOA, GPIO_PinSource5 |GPIO_PinSource6 |GPIO_PinSource7 , GPIO_AF_SPI1); SPI_I2S_DeInit(SPI1); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master ; SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b ; SPI_InitStructure.SPI_CPOL = SPI_CPOL_High ; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft ; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 0; SPI_Init(SPI1, &SPI_InitStructure); SPI_Cmd(SPI1, ENABLE); GPIO_ResetBits(GPIOE, GPIO_Pin_3); SPI_I2S_SendData(SPI1, 0x20C7); //Sensor Config while(1){ //Read Y-Axis SPI_I2S_SendData(SPI1, 0xAB00); SPI_I2S_ReceiveData(SPI1); } I'm running this in Debug-mode only (step by step), so there should not be any timing problems due to missing flag-status requests. After sending the data, RXNE bit in SPI SR Register is set but the SPI Data Register always contains 0x0000. I have also tried different modes changing CPOL and CPHA, no results. I am using CooCox IDE I hope somebody can help! Thanks, Alex. #accelerometer #stm32f4 #spi #metoo2014-06-17 04:10 PM
Thanks so much for your code. I finally tried it, but how come I get data jumping from 7000-51000. Is this normal?
Also, how did you know to write 0x20C7, then 0xAB00?From datasheet below I don't see anything like it.http://www.st.com/web/en/resource/technical/document/datasheet/CD00135460.pdf2014-09-14 12:46 AM
Hi,
I am trying to build a project using MEMS accelerometer. I have created a project using your code.It was built successfuly without any error. But i didn't get a clear idea of the functionality. What value it returns in the while loop.2014-09-15 02:00 AM
But i didn't get a clear idea of the functionality. What value it returns in the while loop.
I'd suggest to download the datasheet of the MEMS accelerometer chip. Besides of documenting the returned data type (I think it was signed short), it might prove useful in understanding the initialization sequence, and for changes/improvements of the project.
2014-09-15 05:58 AM
Also, how did you know to write0x20C7, then 0xAB00?
From datasheet below I don't see anything like it. http://www.st.com/web/en/resource/technical/document/datasheet/CD001354pdf You people need to get a lot more thorough reading technical documentation.
2014-09-18 03:48 AM
Sir,
I am using SM32F4 MB997C Board, the accelerometer in this board is LIS3DSH, the firmware STM32F4-Discovery_FW_V1.1.0 contains example only for LIS320DL. Where can I find the firmware version supporting STM32F4 MB997C (and LIS3DSH MEMS).2014-09-18 07:20 AM
I don't know, trying reviewing available materials for the code/driver/functionality you need.
http://www.st.com/web/en/catalog/tools/PF252688
http://www.st.com/web/en/catalog/tools/PF255640
2014-09-18 09:01 AM
Hi Avinash.Punnadiyil,
Please don't [DEAD LINK /public/STe2ecommunities/mcu/Lists/STM32Discovery/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/STM32Discovery/STM32F4Discovery%20LIS302DL%20or%20LIS3DSH&FolderCTID=0x01200200770978C69A1141439FE559EB459D75800084C20D8867EAD444A5987D47BE638E0F¤tviews=612]Cross-Post.Regards.2016-07-14 11:50 AM
Looking for someone to tell me how I can use / access the accelerometer for Virtual pinball machine, nudging the ball.