STM32F0Discovery

Любые вопросы от новичков. Что такое Keeloq, микроконтроллер или паяльник.
Аватара пользователя
Бурый
Фрикер
Сообщения: 615
Зарегистрирован: 05 янв 2014, 15:42
Благодарил (а): 2 раза
Поблагодарили: 4 раза

STM32F0Discovery

Сообщение Бурый »

Данная плата, содержит на своем борту мк(STM32F103C8T6), где записана прошивка программатора (ST-Link) и мк(STM32F051R8T6), куда собственно и записываем наши прошивки, при помощи STM32 ST-LINK Utility. Вашему вниманию предлагаю небольшую программку, написанную в среде разработки Keil μVision 5, при помощи которой инициализировать и работать с трансивером CC1101. Использовался аппаратный SPI с программным "Выбором кристалла", конфиг сделан под 433.92МГц AM!

config.h

Код: Выделить всё

#define SRES 0x30
#define SCAL 0x33
#define SRX 0x34
#define STX 0x35
#define SIDLE 0x36
#define SPWD 0x39

#define IOCFG2 0x00
#define IOCFG1 0x01
#define IOCFG0 0x02
#define FIFOTHR 0x03
#define SYNC1 0x04
#define SYNC0 0x05
#define PKTLEN 0x06
#define PKTCTRL1 0x07
#define PKTCTRL0 0x08
#define ADDR 0x09
#define CHANNR 0x0A
#define FSCTRL1 0x0B
#define FSCTRL0 0x0C
#define FREQ2 0x0D
#define FREQ1 0x0E
#define FREQ0 0x0F
#define MDMCFG4 0x10
#define MDMCFG3 0x11
#define MDMCFG2 0x12
#define MDMCFG1 0x13
#define MDMCFG0 0x14
#define DEVIATN 0x15
#define MCSM2 0x16
#define MCSM1 0x17
#define MCSM0 0x18
#define FOCCFG 0x19
#define BSCFG 0x1A
#define AGCTRL2 0x1B
#define AGCTRL1 0x1C
#define AGCTRL0 0x1D
#define WOREVT1 0x1E
#define WOREVT0 0x1F
#define WORCTRL 0x20
#define FREND1 0x21
#define FREND0 0x22
#define FSCAL3 0x23
#define FSCAL2 0x24
#define FSCAL1 0x25
#define FSCAL0 0x26
#define RCCTRL1 0x27
#define RCCTRL0 0x28
#define FSTEST 0x29
#define PTEST 0x2A
#define AGCTEST 0x2B
#define TEST2 0x2C
#define TEST1 0x2D
#define TEST0 0x2E
#define PATABLE 0x3E

const unsigned char cc_config[] =
{
IOCFG0, 0x00,
IOCFG2, 0x0D,
FIFOTHR, 0x47,
PKTCTRL0,0x32,
FSCTRL1, 0x06,
FSCTRL0, 0x00,
FREQ2, 0x10,
FREQ1, 0xB0,
FREQ0, 0x71,
MDMCFG4, 0xF5,
MDMCFG3, 0x83,
MDMCFG2, 0x33,
MDMCFG1, 0x22,
MDMCFG0, 0xF8,
MCSM2, 0x07,
MCSM1, 0x30,
MCSM0, 0x18,
AGCTRL2, 0x03,
AGCTRL1, 0x40,
AGCTRL0, 0x91,
FREND1, 0x56,
FREND0, 0x11,
FSCAL3, 0xE9,
FSCAL2, 0x2A,
FSCAL1, 0x00,
FSCAL0, 0x1F,
TEST2, 0x81,
TEST1, 0x35,
TEST0, 0x09,
PATABLE, 0x00,
PATABLE, 0xC0,
PATABLE, 0x00,
PATABLE, 0x00,
PATABLE, 0x00,
PATABLE, 0x00,
PATABLE, 0x00,
PATABLE, 0x00
};


main.c

Код: Выделить всё

#include "stm32f0xx_spi.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_gpio.h"
#include "config.h"

GPIO_InitTypeDef PORT_GPIOA;
SPI_InitTypeDef SPI_port;

#define SS GPIO_Pin_4
#define CS_L        GPIOA->BRR = (1<<4) //CS = L
#define CS_H      GPIOA->BSRR = (1<<4) //CS = H


unsigned int i;
void delay(unsigned int delayTime)
{
    for (i = 0; i < delayTime; i++);
}


void InitGPIOA()
{
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
	PORT_GPIOA.GPIO_Mode = GPIO_Mode_OUT;
	PORT_GPIOA.GPIO_OType = GPIO_OType_PP;
	PORT_GPIOA.GPIO_Pin = SS;
	PORT_GPIOA.GPIO_PuPd = GPIO_PuPd_UP;
	PORT_GPIOA.GPIO_Speed = GPIO_Speed_Level_3;
	GPIO_Init(GPIOA,&PORT_GPIOA);
}


void InitSPI()
{
	/* SPI SCK and MOSI*/
	PORT_GPIOA.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;
	PORT_GPIOA.GPIO_Mode = GPIO_Mode_AF;
	PORT_GPIOA.GPIO_Speed = GPIO_Speed_50MHz;
	PORT_GPIOA.GPIO_OType = GPIO_OType_PP;
	PORT_GPIOA.GPIO_PuPd = GPIO_PuPd_DOWN;
	GPIO_Init(GPIOA, &PORT_GPIOA);
		
		
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
	SPI_port.SPI_CPOL =	 SPI_CPOL_High;
	SPI_port.SPI_CPHA = SPI_CPHA_2Edge;
	SPI_port.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
	SPI_port.SPI_DataSize = SPI_DataSize_8b;
	SPI_port.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
	SPI_port.SPI_FirstBit = SPI_FirstBit_MSB;
	SPI_port.SPI_Mode = SPI_Mode_Master;
	SPI_port.SPI_NSS = SPI_NSS_Soft;
	SPI_Init(SPI1,&SPI_port);
	SPI_Cmd(SPI1, ENABLE);
}

void spi_send(unsigned char command)
{
SPI_SendData8(SPI1,command);
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET) {}
}

void cc1101_strobe(unsigned char s)
{
CS_H;
delay(150);
CS_L;
delay(50);
spi_send(s);
delay(50);
CS_H;
}

void rtx_rx()
{
cc1101_strobe(SIDLE);
cc1101_strobe(SRX);
}

void rtx_tx()
{
cc1101_strobe(SIDLE);
cc1101_strobe(STX);
}

void cc1101_init()
{
int a;

cc1101_strobe(SRES);
CS_H;
delay(150);
CS_L;
delay(50);
for(a=0; a<74; a++)
{
delay(1);
spi_send(cc_config[a]);
delay(1);
}
delay(50);
CS_H;
}

int main()
{
	InitGPIOA();
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0);
	InitSPI();
	CS_H;
	cc1101_init();
	rtx_rx();
}
Последний раз редактировалось Бурый 03 апр 2015, 11:38, всего редактировалось 1 раз.
Аватара пользователя
Бурый
Фрикер
Сообщения: 615
Зарегистрирован: 05 янв 2014, 15:42
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: STM32F0Discovery

Сообщение Бурый »

Схема подключения CC1101 к данной плате в рамках данного проекта
PA4 - CS (SS)
PA5 - SCK
PA7 - MOSI

Добавлено через 2 минуты
В дальнейшем, будет рассмотрен прием Keeloq с выводом принятой посылки по UART.
russo_turisto
Фрикер
Сообщения: 1211
Зарегистрирован: 21 авг 2011, 22:28
Поблагодарили: 1 раз

Re: STM32F0Discovery

Сообщение russo_turisto »

лучше папкой проэкт выкладывать,.
А что за платка?

Добавлено через 54 секунды
Настройки прерываний не вижу для приема

А какой дисплей будешь подключать в дальнейшем?
Аватара пользователя
Бурый
Фрикер
Сообщения: 615
Зарегистрирован: 05 янв 2014, 15:42
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: STM32F0Discovery

Сообщение Бурый »

На данном этапе реализована работа с трансивером CC1101 (слушать эфир, можно конечно и глушилку сделать, вариантов достаточно) Основная цель - привлечение молодежи. Прерывания пока не настраивал, собственно как и таймер. В дальнейшем думаю целесообразно дополнить экраном от Nokia 5110. Потом будет отдельно сделан конфиг под Si4432.

Фото платы, позже выложу, скорее всего, будет офлрмлятся как отдельный проект, как я это вижу - отдельная монтажная плата с экраном и трансивером на борту. Главное чтобы народ подтягивался.
Последний раз редактировалось Бурый 04 апр 2015, 10:11, всего редактировалось 1 раз.
Аватара пользователя
Бурый
Фрикер
Сообщения: 615
Зарегистрирован: 05 янв 2014, 15:42
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: STM32F0Discovery

Сообщение Бурый »

А вот и сама плата!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
russo_turisto
Фрикер
Сообщения: 1211
Зарегистрирован: 21 авг 2011, 22:28
Поблагодарили: 1 раз

Re: STM32F0Discovery

Сообщение russo_turisto »

gafbich писал(а):На данном этапе реализована работа с трансивером CC1101 (слушать эфир, можно конечно и глушилку сделать, вариантов достаточно) Основная цель - привлечение молодежи. Прерывания пока не настраивал, собственно как и таймер. В дальнейшем думаю целесообразно дополнить экраном от Nokia 5110. Потом будет отдельно сделан конфиг под Si4432.

Фото платы, позже выложу, скорее всего, будет офлрмлятся как отдельный проект, как я это вижу - отдельная монтажная плата с экраном и трансивером на борту. Главное чтобы народ подтягивался.
Замечательная эпоха экрана 5110 уже прошла, судя от сообщениям его сложно достать во многих регионах.
Также при выводе пакета кейлога он пишеться на нем в две строки, можно вывести только три пакета на экране. Это шесть строк по 14 символов в строке. А если еще нужно служебную информацию выводить...Плюс монохром.

Для реального привлечения молодежи и перспектив дальнейшего развития проэкта необходимо закладывать железо которое хотят видеть пользователи.
Ну как вариант из этого проэкта, в дальнейшем, можно будет сделать контроллер для умного дома с опросом беспроводных датчиков и исполнительных устройств, с выводом в цвете всей информации и управлением бытовыми приборами.

Это я клоню к использованию в проэкте цветного дисплея, ну как-то не считаю правильным цеплять на 32 битный контроллер монохромный дисплей.

Есть вариант на дисплее 1616 нокии, там 9ти битный SPI, в продаже есть он. http://phreakerclub.com/forum/showpost. ... tcount=297

Но лучший вариант это 320*240 точек дисплей 2.2"
http://phreakerclub.com/forum/showpost. ... tcount=297

Ну если планируется задействовать тач скриин тогда 2.8" дисплей.
Аватара пользователя
Бурый
Фрикер
Сообщения: 615
Зарегистрирован: 05 янв 2014, 15:42
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: STM32F0Discovery

Сообщение Бурый »

russo_turiso спасибо за информацию, про экран - согласен!
russo_turisto
Фрикер
Сообщения: 1211
Зарегистрирован: 21 авг 2011, 22:28
Поблагодарили: 1 раз

Re: STM32F0Discovery

Сообщение russo_turisto »

Правильная ссылка для 2.2" http://phreakerclub.com/forum/showpost. ... stcount=18

Это для 2.8" дисплея на ILI9325 контролере дисплея с тачскрином. Платка STM32-mini v3.0

Картинку урезал в качестве, зеленым это хан пакеты.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось russo_turisto 04 апр 2015, 19:43, всего редактировалось 1 раз.
Аватара пользователя
DIVER_SANT
Модератор
Сообщения: 2630
Зарегистрирован: 27 мар 2011, 08:15
Поблагодарили: 11 раз

Re: STM32F0Discovery

Сообщение DIVER_SANT »

Несколько лет такая платка валяется на полке-показалась слишком замудренной настройка проектов.Хорошо если будет продвигаться это направление здесь-будет толчком для изучения..

Добавлено через 2 минуты
russo_turisto писал(а):Замечательная эпоха экрана 5110 уже прошла, судя от сообщениям его сложно достать во многих регионах.
Не согласен-на алиекспрессе спокойно купить можно.Я вот на OLED смотрю-не так и дорого,но проще с подключением и информативно.
Правильно поставленный вопрос-на половину полученный ответ ;)
++++++++++++++++++++++++++++++++++++++
http://www.youtube.com/watch?v=ktnn-s3ebzw
Аватара пользователя
shalinn
Участник
Сообщения: 107
Зарегистрирован: 31 янв 2012, 21:56

Re: STM32F0Discovery

Сообщение shalinn »

DIVER_SANT писал(а):Я вот на OLED смотрю-не так и дорого,но проще с подключением и информативно.
я как раз OLED дисплей прикрутил к анализатору на ардуине, скоро выложу на форум, осталось подправить кое какие косяки в коде.
Ответить