Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Private variables ---------------------------------------------------------*/
- I2C_HandleTypeDef hi2c1;
- DMA_HandleTypeDef hdma_i2c1_rx;
- /* Private function prototypes -----------------------------------------------*/
- static void MX_I2C1_Init(void);
- /* I2C1 init function */
- static void MX_I2C1_Init(void)
- {
- hi2c1.Instance = I2C1;
- hi2c1.Init.ClockSpeed = 400000;
- hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
- hi2c1.Init.OwnAddress1 = 0;
- hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
- hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
- hi2c1.Init.OwnAddress2 = 0;
- hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
- hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
- if (HAL_I2C_Init(&hi2c1) != HAL_OK)
- {
- _Error_Handler(__FILE__, __LINE__);
- }
- }
- static void MX_DMA_Init(void)
- {
- /* DMA controller clock enable */
- __HAL_RCC_DMA1_CLK_ENABLE();
- /* DMA interrupt init */
- /* DMA1_Channel3_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
- /* DMA1_Channel4_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
- /* DMA1_Channel7_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn);
- }
- /* Function to read I2C bus */
- void readAccelRegisters(void) {
- buffer[0] = 0x3B; // Access register 3B - Accelerometer start of data
- HAL_I2C_Master_Transmit_DMA(&hi2c1, 0x68<<1, buffer, 1);
- HAL_I2C_Master_Receive_DMA(&hi2c1, 0x68<<1, buffer, 6);
- // Bit shift and store each returned byte into variables
- accelX = buffer[0] << 8 | buffer[1]; // Accelerometer X raw
- accelY = buffer[2] << 8 | buffer[3]; // Accelerometer Y raw
- accelZ = buffer[4] << 8 | buffer[5]; // Accelerometer Z raw
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement