Hallo,
ich möchte eine Kommunikation zwischen einem Raspberry Pi und einem
STM32F303 herstellen.
Der Pi soll 1-2 Parameter im STM32 C-Code verändern können.
Ich dachte dabei an I2C.
Der Pi ist dabei der Master. Der STM32 der Slave.
STM32 Seite:
1 | uint8_t aRxBuffer[2];
|
2 |
|
3 | while (1)
|
4 | {
|
5 | HAL_I2C_Slave_Receive(&hi2c1, aRxBuffer, 2, 100);
|
6 | }
|
7 |
|
8 |
|
9 | static void MX_I2C1_Init(void)
|
10 | {
|
11 |
|
12 | hi2c1.Instance = I2C1;
|
13 | hi2c1.Init.Timing = 0x2000090E;
|
14 | hi2c1.Init.OwnAddress1 = 20;
|
15 | hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
|
16 | hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
|
17 | hi2c1.Init.OwnAddress2 = 0;
|
18 | hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
|
19 | hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
|
20 | hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
|
21 | if (HAL_I2C_Init(&hi2c1) != HAL_OK)
|
22 | {
|
23 | _Error_Handler(__FILE__, __LINE__);
|
24 | }
|
25 |
|
26 | /**Configure Analogue filter
|
27 | */
|
28 | if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
|
29 | {
|
30 | _Error_Handler(__FILE__, __LINE__);
|
31 | }
|
32 |
|
33 | /**Configure Digital filter
|
34 | */
|
35 | if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK)
|
36 | {
|
37 | _Error_Handler(__FILE__, __LINE__);
|
38 | }
|
39 |
|
40 | }
|
Am Pi möchte ich gerne Node-Red "node-red-contrib-i2c" verwenden. Den
I2C-Out Node habe ich entsprechend konfiguiert (Ip etc.).
Leider kann ich keine Verbindung herstellen bzw. den Buffer "aRxBuffer"
beschreiben.
Mit "sudo i2cdetect -y 1" findet der Pi keine Slave Adresse? An der
Verkabelung kann es eig. nicht liegen.
Kann mir bitte jemand weiterhelfen. Danke!