Проблемы с автобусом I2C на STM32F103C

снорман
Ср. 11 июля 2018 г., 17:20
Привет,

У меня есть несколько проблем с использованием шины I2C (MP3115A2 - датчик давления) на STM32F103C.

Кажется, я могу найти устройство, использующее: -
Device USB\VID_0483&PID_3748\6&418b671&0&3 was not migrated due to partial or ambiguous match. Last Device Instance Id: USB\VID_1C4F&PID_0034\6&271a58ce&0&3 Class Guid: {745A17A0-74D3-11D0-B6FE-00A0C90F57DA} Location Path: PCIROOT(0)#PCI(1A00)#USBROOT(0)#USB(1)#USB(3) Migration Rank: 0xF000FFFFFFFF0023 Present: false Status: 0xC0000719

Стивестронг
Ср. 11 июля 2018 г., 17:50
Какое напряжение вы подаете на свой датчик?
У вас есть подтягивающие резисторы? До 5 В или 3.3В?
Синие таблетки работают только с 3.3В.

снорман
Чт 12 июля 2018 г., 6:50 утра
Спасибо за ответ.

MP3115A2 работает на 3.3V, и я попытался подключить два подтягивания 4.7K оставляют в автобусе I2C до 3.3В. Но все еще тот же результат.

ZMEMW16
Чт 12 июля 2018 г. 9:13 утра
Попробуйте 3K3
SRP

снорман
Чт 12 июля 2018 г. 9:43 утра
Спасибо за ответ - тоже попробовали это - к сожалению, тот же результат.

Я думаю, что мне, возможно, придется посмотреть на это с применением или, может быть, попробовать с некоторыми другими устройствами i2c.

снорман
Чт 12 июля 2018 г. 10:55 утра
Может ли это быть что -то связано с повторным началом?

Здесь есть интересный пост: -

ViewTopic.PHP?t = 934

Я протестирую и обновлю свои результаты

снорман
Чт 12 июля 2018 г. 13:11
Итак, я нашел работу, используя Softwire.H вместо провода.час
Bus 003 Device 015: ID 0483:3748 STMicroelectronics ST-LINK/V2 Bus 003 Device 014: ID 04d8:fc92 Microchip Technology, Inc. Open Bench Logic Sniffer Bus 003 Device 013: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T Bus 003 Device 012: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter Bus 003 Device 011: ID 0483:3748 STMicroelectronics ST-LINK/V2

Стивестронг
Чт 12 июля 2018 г. 13:16
Вы уверены, что используете последнюю версию Repo от Roger?
Потому что в последнее время была решена проблема, связанная с I2C: https: // github.com/rogerclarkmelbourne/ ... 2/pull/508

снорман
Чт 12 июля 2018 г. 13:25
Да, я экспортировал вчера из главного филиала.

С наилучшими пожеланиями,

Стивестронг
Чт 12 июля 2018 г. 14:00
Было бы неплохо, чтобы на вашем чипе были установлены графики охвата как HW (не работают), так и SW i2c (работая), чтобы решить проблему в модуле HW i2c.
Не могли бы вы предоставить эти графики?

снорман
Пт 13 июля 2018 г. 10:28 утра
Спасибо за вашу помощь.

Да, хорошая идея - как только я вернусь, я сделаю несколько скриншотов и обновлю эту ветку.

С наилучшими пожеланиями,

Доктек
Ср. 25 июля 2018 г., 4:00 утра
Я здесь не претендует на экспертизу, но я получил следующий код, чтобы работать как с дефолтом, так и с альтернативными портами I2C Discovery L053 и Specialy L031. #include "SPI.h" #include "Adafruit_GFX_AS.h" #include "Adafruit_ILI9341_STM.h" // For the Adafruit shield, these are the default. #define TFT_DC PA15 #define TFT_CS PB4 // Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC Adafruit_ILI9341_STM tft = Adafruit_ILI9341_STM(TFT_CS, TFT_DC); // If using the breakout, change pins as desired //Adafruit_ILI9341_STM tft = Adafruit_ILI9341_STM(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); void setup() { Serial.begin(9600); Serial.println("ILI9341 Test!"); tft.begin(); // read diagnostics (optional but can help debug problems) uint8_t x = tft.readcommand8(ILI9341_RDMODE); Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); x = tft.readcommand8(ILI9341_RDMADCTL); Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); x = tft.readcommand8(ILI9341_RDPIXFMT); Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); x = tft.readcommand8(ILI9341_RDIMGFMT); Serial.print("Image Format: 0x"); Serial.println(x, HEX); x = tft.readcommand8(ILI9341_RDSELFDIAG); Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); Serial.println(F("Benchmark Time (microseconds)")); Serial.print(F("Screen fill ")); Serial.println(testFillScreen()); delay(500);