Фрикер Клуб
 

Вернуться   Фрикер Клуб > Основной раздел > Песочница-2

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 03.04.2015, 12:30   #1
Бурый
Резидент клуба
 
Аватар для Бурый
 
Регистрация: 05.01.2014
Сообщений: 500
По умолчанию 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.04.2015 в 12:38.
Бурый вне форума   Ответить с цитированием
Старый 03.04.2015, 22:55   #2
Бурый
Резидент клуба
 
Аватар для Бурый
 
Регистрация: 05.01.2014
Сообщений: 500
По умолчанию Re: STM32F0Discovery

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

Добавлено через 2 минуты
В дальнейшем, будет рассмотрен прием Keeloq с выводом принятой посылки по UART.
Бурый вне форума   Ответить с цитированием
Старый 04.04.2015, 10:07   #3
russo_turisto
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,158
По умолчанию Re: STM32F0Discovery

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

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

А какой дисплей будешь подключать в дальнейшем?
russo_turisto вне форума   Ответить с цитированием
Старый 04.04.2015, 11:04   #4
Бурый
Резидент клуба
 
Аватар для Бурый
 
Регистрация: 05.01.2014
Сообщений: 500
По умолчанию Re: STM32F0Discovery

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

Фото платы, позже выложу, скорее всего, будет офлрмлятся как отдельный проект, как я это вижу - отдельная монтажная плата с экраном и трансивером на борту. Главное чтобы народ подтягивался.

Последний раз редактировалось Бурый; 04.04.2015 в 11:11.
Бурый вне форума   Ответить с цитированием
Старый 04.04.2015, 13:08   #5
Бурый
Резидент клуба
 
Аватар для Бурый
 
Регистрация: 05.01.2014
Сообщений: 500
По умолчанию Re: STM32F0Discovery

А вот и сама плата!
Изображения
Тип файла: jpg STM32F0DISCOVERY-intro.jpg (97.7 Кб, 99 просмотров)
Тип файла: jpg stm32f0discovery_pinout_RIOT.jpg (417.0 Кб, 104 просмотров)
Бурый вне форума   Ответить с цитированием
Старый 04.04.2015, 17:37   #6
russo_turisto
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,158
По умолчанию Re: STM32F0Discovery

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

Фото платы, позже выложу, скорее всего, будет офлрмлятся как отдельный проект, как я это вижу - отдельная монтажная плата с экраном и трансивером на борту. Главное чтобы народ подтягивался.

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

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

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

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

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

Ну если планируется задействовать тач скриин тогда 2.8" дисплей.
russo_turisto вне форума   Ответить с цитированием
Старый 04.04.2015, 19:07   #7
Бурый
Резидент клуба
 
Аватар для Бурый
 
Регистрация: 05.01.2014
Сообщений: 500
По умолчанию Re: STM32F0Discovery

russo_turiso спасибо за информацию, про экран - согласен!
Бурый вне форума   Ответить с цитированием
Старый 04.04.2015, 20:39   #8
russo_turisto
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,158
По умолчанию Re: STM32F0Discovery

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

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

Картинку урезал в качестве, зеленым это хан пакеты.
Изображения
Тип файла: jpg 8.jpg (103.0 Кб, 74 просмотров)
Тип файла: jpg 9.jpg (115.0 Кб, 82 просмотров)

Последний раз редактировалось russo_turisto; 04.04.2015 в 20:43.
russo_turisto вне форума   Ответить с цитированием
Старый 05.04.2015, 06:10   #9
DIVER_SANT
Модератор
 
Аватар для DIVER_SANT
 
Регистрация: 27.03.2011
Сообщений: 2,313
По умолчанию Re: STM32F0Discovery

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

Добавлено через 2 минуты
Цитата:
Сообщение от russo_turisto
Замечательная эпоха экрана 5110 уже прошла, судя от сообщениям его сложно достать во многих регионах.

Не согласен-на алиекспрессе спокойно купить можно.Я вот на OLED смотрю-не так и дорого,но проще с подключением и информативно.
__________________
Правильно поставленный вопрос-на половину полученный ответ;)
++++++++++++++++++++++++++++++++++++++
[url]http://www.youtube.com/watch?v=ktnn-s3ebzw[/url]
DIVER_SANT вне форума   Ответить с цитированием
Старый 06.04.2015, 16:57   #10
shalinn
Вступил в клуб
 
Аватар для shalinn
 
Регистрация: 31.01.2012
Сообщений: 84
По умолчанию Re: STM32F0Discovery

Цитата:
Сообщение от DIVER_SANT
Я вот на OLED смотрю-не так и дорого,но проще с подключением и информативно.

я как раз OLED дисплей прикрутил к анализатору на ардуине, скоро выложу на форум, осталось подправить кое какие косяки в коде.
shalinn вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 16:04. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com