Anton01 Опубликовано 9 апреля, 2018 Поделиться Опубликовано 9 апреля, 2018 (изменено) Добрый день пытаюсь настроить обмен сообщениями между контролерами STM32F100RBT6B(Slave) и STM32F103C8(Master) по шине SPI. Прошивка STM32F103C8(Master) #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_spi.h" int main() { GPIO_InitTypeDef GPIOStructure; SPI_InitTypeDef SPIStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 ,ENABLE); GPIO_StructInit(&GPIOStructure); GPIOStructure.GPIO_Pin= GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 |GPIO_Pin_7; GPIOStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIOStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIOStructure); SPI_StructInit(&SPIStructure); SPIStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex; SPIStructure.SPI_Mode = SPI_Mode_Master; SPIStructure.SPI_DataSize = SPI_DataSize_8b; SPIStructure.SPI_CPOL = SPI_CPOL_Low; SPIStructure.SPI_CPHA = SPI_CPHA_2Edge; SPIStructure.SPI_NSS = SPI_NSS_Soft; SPIStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; SPIStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPIStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPIStructure); SPI_Cmd(SPI1,ENABLE); while(1) { while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET); SPI_I2S_SendData(SPI1, 0x21); } return 0; } Прошивка STM32F100RBT6B(Slave) #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_spi.h" uint8_t data; uint8_t needUpdate; uint8_t spi_receve() { while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); // ???? ???? ?????? ??????? uint8_t received = SPI_I2S_ReceiveData(SPI1); return received; } void Delay(int ms) { for (int i=0;i<ms;i++); } int main() { GPIO_InitTypeDef GPIOStructure; SPI_InitTypeDef SPIStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 ,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); GPIO_StructInit(&GPIOStructure); GPIOStructure.GPIO_Pin= GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 |GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIOStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIOStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIOStructure); GPIOStructure.GPIO_Pin= GPIO_Pin_10 | GPIO_Pin_11; GPIOStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIOStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIOStructure); SPI_StructInit(&SPIStructure); SPIStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex; SPIStructure.SPI_Mode = SPI_Mode_Slave; SPIStructure.SPI_DataSize = SPI_DataSize_8b; SPIStructure.SPI_CPOL = SPI_CPOL_Low; SPIStructure.SPI_CPHA = SPI_CPHA_2Edge; SPIStructure.SPI_NSS = SPI_NSS_Soft; SPIStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; SPIStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPIStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPIStructure); SPI_Cmd(SPI1,ENABLE); while(1) { Delay(1000); data = spi_receve(); GPIO_ResetBits(GPIOC, GPIO_Pin_10 | GPIO_Pin_11); if (data == 0x21) { GPIO_SetBits(GPIOC, GPIO_Pin_10); } if (data == 0x22) { GPIO_SetBits(GPIOC, GPIO_Pin_11); } needUpdate = 0; } return 0; } Распиновка: PA7->PA7(MOSI), PA6->PA6(MISO), PA5->PA5(SCK), PA4->PA4(NSS) Снимок анализатора прикрепил. Но ничего не работае, Slave получает всякий мусор....., но не значение 0x21. Я скорее всего делаю какие-то базовые ошибки, но не могу найти что не так. Буду благодарен за посдказки. Спасибо. Изменено 9 апреля, 2018 пользователем Anton01 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
snn_krs Опубликовано 9 апреля, 2018 Поделиться Опубликовано 9 апреля, 2018 48 minutes ago, Anton01 said: SPIStructure.SPI_NSS = SPI_NSS_Soft; Как минимум надо программно управлять NSS. При передачи он должен быть 0. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
mail_robot Опубликовано 9 апреля, 2018 Поделиться Опубликовано 9 апреля, 2018 у меня вопрос - почему надо было использовать именно эту шину для не свойственной ей задачи? Есть же UART. Для особых ценителей USART 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторовОбязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Zhuk72 Опубликовано 10 апреля, 2018 Поделиться Опубликовано 10 апреля, 2018 Разве MOSI и MISO не нужно перекрещивать? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
hasl Опубликовано 10 апреля, 2018 Поделиться Опубликовано 10 апреля, 2018 9 минут назад, Zhuk72 сказал: Разве MOSI и MISO не нужно перекрещивать? нет, переведите и поймете ТС: посмотрите на сигнала клока. У вас что только 3 тактовых импульса ? Ничего странным не кажется? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Zhuk72 Опубликовано 10 апреля, 2018 Поделиться Опубликовано 10 апреля, 2018 Расшифровку аббревиатуры я знаю, потому и спрашиваю. Передача для одного является приёмом для другого и наоборот. Update! Да, верно, их надо параллелить. Почему-то решил, что в ведомом режиме МК меняется функционал пина. Мануал помог. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Литиевые батарейки и аккумуляторы от мирового лидера EVE в КомпэлКомпания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
hasl Опубликовано 10 апреля, 2018 Поделиться Опубликовано 10 апреля, 2018 (изменено) MISO - master input slave output по моему все предельно ясно. Зачем задавать такие вопросы. Просто для "поболтать" SPI изъезжан уже давно и много хороший статей Изменено 10 апреля, 2018 пользователем hasl 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Zhuk72 Опубликовано 10 апреля, 2018 Поделиться Опубликовано 10 апреля, 2018 Можно было и не отвечать, я выше уже признал ошибку. Или просто для "поболтать" по вашему же выражению? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.