31.10.2018, 11:54
|
|
Заблокирован
Регистрация: 16.03.2005
Сообщений: 5,918
Сказал спасибо: 560
Сказали Спасибо 9,145 раз(а) в 2,892 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
Сообщение от CERGEI1982
|
, я как раз вылаживал исходник
|
Сообщение от akegor
|
Простите, это что? Как перевести на русский? "Отлаживали" или "выкладывали"?
|
Стыдно не знать элементарных вещей.
Согласно нашей русской грмтк., "вылаживание", это процесс
облажания.
|
|
|
Сказали "Спасибо" verdana
|
|
|
31.10.2018, 11:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
akegor, да вот ночью на SPL включил ремап одной строкой и заработало. Посмотрел код в отладчике - он там через дополнительные переменные выставляет регистр. И ремап включился. Пока попробую на SPL запустить, посмотреть в отладчике и написать уже свое. Инит оставлю может на SPL, а вот либу для дисплея подправлю без SPL.
|
|
|
|
31.10.2018, 13:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
DOSIKUS , великое спасибо на том форуме )) Есле б раньше его примеры увидел, то быстрее бы вкурил шину тогда...
|
|
|
|
31.10.2018, 15:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
Парни подскажите почему может не выставляться бит SB после старта?
Висит в вайле... Подтяжка к питанию 4.7ком.
PHP код:
|
это инит
I2C1-›CR2 &= ~I2C_CR2_FREQ;
I2C1-›CR2 |= 42;
I2C1-›CCR &= ~I2C_CCR_CCR;
I2C1-›CCR |= 34;
I2C1-›CCR |= I2C_CCR_FS;
I2C1-›TRISE = 12;
I2C1-›CR1 |= I2C_CR1_PE;
а это начало посылки
I2C1-›CR1 |= I2C_CR1_START;
while (!(I2C1-›SR1 & I2C_SR1_SB)) // тут висит. Нет флага...
{
}
(void) I2C1-›SR1;
I2C1-›DR = SSD1306_I2C_ADDR1;
while (!(I2C1-›SR1 & I2C_SR1_ADDR))
{
}
(void) I2C1-›SR1;
(void) I2C1-›SR2;
I2C1-›DR=control_byte;
while (!(I2C1-›SR1 & I2C_SR1_TXE))
{
}
I2C1-›DR=data;
while (!(I2C1-›SR1 & I2C_SR1_BTF))
{
}
I2C1-›CR1 |= I2C_CR1_STOP;
|
|
|
|
|
31.10.2018, 16:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
А что на шине твориться? Видать старта нет или порты неправильно настроены.
__________________
Глаза боятся,а руки делают.
|
|
|
|
31.10.2018, 16:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
Сообщение от CERGEI1982
|
А что на шине твориться? Видать старта нет или порты неправильно настроены.
|
Настройка портов
PHP код:
|
RCC-›APB1ENR |= RCC_APB1ENR_I2C1EN;
RCC-›APB2ENR |= RCC_APB2ENR_IOPBEN;
// AFIO-›MAPR |= AFIO_MAPR_I2C1_REMAP;
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE); // ремап заработал только так на эту шину
// 00: Input mode (reset state)
//01: Output mode, max speed 10 MHz.
//10: Output mode, max speed 2 MHz.
//11: Output mode, max speed 50 MHz.
GPIOB-›CRH |= GPIO_CRH_MODE8 // OUT 50 MHz
| GPIO_CRH_MODE9 // OUT 50 MHz
;
// In input mode (MODE[1:0]=00):
//00: Analog mode I2C_EVENT_MASTER_MODE_SELECT
//01: Floating input (reset state)
//10: Input with pull-up / pull-down
//11: Reserved
//In output mode (MODE[1:0] › 00):
//00: General purpose output push-pull
//01: General purpose output Open-drain
//10: Alternate function output Push-pull
//11: Alternate function output Open-drain
GPIOB-›CRH &= ~GPIO_CRH_CNF8;
GPIOB-›CRH &= ~GPIO_CRH_CNF9;
;
GPIOB-›CRH |= GPIO_CRH_CNF8
| GPIO_CRH_CNF9 // for I2C Open Drain need
;
|
Тут пересчитал инит шины
PHP код:
|
I2C1-›CR2 &= ~I2C_CR2_FREQ;
I2C1-›CR2 |= 44;//APB1 = 44MHz
I2C1-›CCR &= ~I2C_CCR_CCR;
I2C1-›CCR |= 220;//(44MHz/100KHz/2)
I2C1-›CCR |= I2C_CCR_FS;
I2C1-›TRISE = 44;//(1mcs/(1/44MHz)+1)
I2C1-›CR1 |= I2C_CR1_PE;
|
Осликом смотрю. Шина полностью молчит. После инита портов на 800 мкс прижимается к земле и возвращается в верх. После старта ничего не происходит на шине.
В SR2 висит бит BUSY и видимо поэтому нет старта...??
сразу после этих строк
PHP код:
|
GPIOB-›CRH |= GPIO_CRH_CNF8
| GPIO_CRH_CNF9 // for I2C Open Drain need
;
|
устанавливается BUSY в регистре SR2. Что это значит?
|
|
|
|
31.10.2018, 19:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
Помню мне говорили что на 103 геморойно шина работает... Вроде на первый взгляд ничего особенного, но уже настроил и вторую шину, и ремап отключал, на других портах проверял - обе шины тупо висят в BUSY... ПОКА НЕЗНАЮ ЧТО УЖЕ ДЕЛАТЬ...
|
|
|
|
31.10.2018, 19:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,643
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
miwutka, у меня все нормально работало, правда, с opencm3 ( здесь и здесь). По-человечески не пробовал.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
31.10.2018, 19:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
Вот взял готовый проект от сюда http://forum.easyelectronics.ru/view...p?f=35&t=14117 автор foton6. Залил в 103с8 проц и работает. Инит там такой же за исключением что сначала он определяет CNF а потом MODE. Я сделал так же и бит BUSY уже не стоит! Оказывается мля порядок инита играет роль ППЦ!!!!..... Но теперь всеравно нет старта....
|
|
|
|
31.10.2018, 19:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32f103REt6 (64 pin) + SPI1
Вообщем этот проц ВОИСТИНУ придуркуватый!
Дописал с включением бита на старт и включить периферию - выдался бит старта ,пошли дальше, флаги сработали. Теперь стали в следующем вайле... Флаг выдачи адреса....
PHP код:
|
I2C1-›CR1 |= I2C_CR1_START | I2C_CR1_PE; while (!(I2C1-›SR1 & I2C_SR1_SB)) { } (void) I2C1-›SR1;
I2C1-›DR = 0x78; // I2C1-›DR = SSD1306_I2C_ADDR1; while (!(I2C1-›SR1 & I2C_SR1_ADDR)) //теперь ждем этого вагона.....
|
Устанавливается флаг AF in reg SR1
OAR1 я так понимаю для слейв режима?? Не могу понять как проц поймет что я записал адрес а не фигню....
Последний раз редактировалось miwutka; 31.10.2018 в 20:05.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:57.
|
|