реклама на сайте
подробности

 
 
> STM32F103.... и SPI3, прошу совета
Valentin-k
сообщение Jan 27 2012, 18:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923



Здравствуйте!столкнулся тут с проблемой
решил подключить к процу STM32F103 флешпамять внешнюю m25p64 на SPI3, т.к. остальные уже задействованы.
но на этом SPI сидит еще и JTAG
я программно сделал ремап, отключив JTAG и оставив только SWD и на всякий случай убрал из жгута эти два проводка.
но SPI все равно не работает...по отладчику все проходит, флаги ставятся и т.п. но ничего не принимает...а когда я посмотрел осциллографом оказалось что физически работает только линия выборки CS которая программно сбрасывается и выставляется, на остальных выводах глухо
хотя использую стандартные функции по интерфейсу...
может кто сталкивался?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Valentin-k
сообщение Jan 27 2012, 20:47
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923



вот текст инициализации....проверял несколько раз, да и при пошаговом поспроизведении по регистрам смотрел - вроде все верно
CODE
//функция инициализации SPI

/* Includes ------------------------------------------------------------------*/
#include "spi_flash.h"

/* Private typedef -----------------------------------------------------------*/
#define SPI_FLASH_PageSize 0x100 //размер страницы

/* Private define ------------------------------------------------------------*/
#define FLASH_ID 0x202017

#define WRITE 0x02 // Команда записи в память
#define WRSR 0x01 // Команда записи регистра статуса
#define WREN 0x06 // Команда разрешения на запись

#define READ 0x03 // Команда чтения из памяти
#define RDSR 0x05 // Команда чтения регистра статуса
#define RDID 0x9F // Команда чтения идентификатора
#define SE 0xD8 // Команда очистки сектора
#define BE 0xC7 // Команда полной очистки

#define WIP_Flag 0x01 // Write In Progress (WIP) flag

#define Dummy_Byte 0xA5
#define SPI_port SPI3

__IO uint32_t FlashID_m25p64 = 0;

uint8_t SPI_FLASH_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //выключаем JTAG, SW отстается включенным

GPIO_InitStructure.GPIO_Pin = 3 | 5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = 4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = 12 | 15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOG, &GPIO_InitStructure);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);

SPI_FLASH_CS_HIGH();// отмена выбора памяти
// RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPInn, DISABLE);
// конфигурация SPI3
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI_port, &SPI_InitStructure);
SPI_Cmd(SPI_port, ENABLE); // загрузка SPI3



FlashID_m25p64 = SPI_FLASH_ReadID(); //считываем идентификатор
if(FlashID_m25p64==FLASH_ID)
{
return 1;//успешная проверка
}
else
{
return 0;//идентификатор не совпал
}
}

остальные функции не стал писать, они базовые

а проц STM32F103VG с 1мб
Причина редактирования: [codebox]
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 28 2012, 05:28
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Valentin-k @ Jan 28 2012, 02:47) *
вот текст инициализации....

Не вижу включения тактирования GPIO и AFIO. Про неправильный режим ножек уже сказали.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016