Помогите разобраться. Пытаюсь запустить i2c на портах 6 и 7 на stm32f103c8t6, все работает регистры статусов меняются, ошибок BERR не выдает, но и ничего не передает на самом деле.
Код:
#include "stm32f103xb.h"
int main() {
// restart afio RCC->APB2RSTR |= RCC_APB2RSTR_AFIORST; // turn on b-pins RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // turn on afio RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // turn on I2C1 RCC->APB1ENR |= RCC_APB1ENR_I2C1EN; // turn on pins 6, 7 // AF and open-drain and 50MHz GPIOB->CRL |= 0xFF << 24; // set i2c1 freq I2C1->CR2 |= 2; // set ack I2C1->CR1 |= I2C_CR1_ACK; // set Pause I2C1->CCR |= 100; // trise I2C1->TRISE |= 9; // on i2c I2C1->CR1 |= I2C_CR1_PE;
// start signal I2C1->CR1 |= I2C_CR1_START; while (!(I2C1->SR1 & I2C_SR1_SB)); (void) I2C1->SR1;
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Спасибо! Этот код работает. Странный конечно у stm32 i2c ведь я вроде тоже самое делаю)
Добавлено after 35 minutes 54 seconds: Проблема в том, что регистр I2C1->DR сам не отчищается, хотя должен как написано в rm, и поэтому I2C1->DR |= data такая запись отправляла смесь предыдущего байта и этого, решение простое использовать I2C1->DR = data
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения