cancel
Showing results for 
Search instead for 
Did you mean: 

How to implement 1-wire communication on STM32MP13 MPU?

mmichala
Associate III

What method should be used to implement 1-wire communication (master) on STM32MP13x board? After doing the research I've found that:

  • for RPI, kernel module w1-gpio can be used to achive 1-wire communication. It's done on kernel level so those critical 1-wire timings can be met. But this module is not natively availabe for STM32MP1, there is no DT overlay ready (like for RPI)
  • dedicated IC like DS2482-800 can be use as a 1-wire master in-the-middle, from which STM32MP1 can later read out the data using I2C
  • no M-core co-processor is available for STM32MP13x series

Maybe there is a chance to port the w1-gpio to STM32MP1. But when using it, or the dedicated IC like DS2492-800 1-wire to I2C, I can only communicate with slaves that perfectly follow all 1-wire slave requirements (reset-present signals, timings, commands etc.). For my usage I need to have more control, because some of the 1-wire slaves I would like to communicate with do not follow those rules (they use custom function codes)

The most obvious way might be to implement it in userland, simply using the GPIOs, but I'm afraid that this way I will never meet the critical 1-wire timings.

1 REPLY 1
PatrickF
ST Employee

Hi @mmichala 

don't know if it helps, but I was successful to read DS18B20 using UART (RX and TX shorted, no additional external HW), with STM32MP1.

Using PyDigiTemp python module like this abstract:

from digitemp.master import UART_Adapter
from digitemp.device import TemperatureSensor

    sensor = TemperatureSensor(UART_Adapter('/dev/ttySTM1'))
    temperature = sensor.get_temperature()

 Regards.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.