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

 
 
> STM32L100 + HTS221
BooSooV
сообщение Jun 11 2015, 05:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 10-06-15
Пользователь №: 87 107



Здравствуйте, есть проблема, надо подключить HTS221(датчик температуры и влажности) к STM32L100.
Схема соеденения:
HTS221 SCL --------- PB13(SCK2) STM32L100
................RDY---------PC6(RDY2)
................SDA---------PB15(MOSI2)
................CS------------PB12(CS2)
Схема соединения изменению не подлежит.
Инициализация SPI 2:
CODE
#define GPIO_Pin_NSS2 GPIO_Pin_12 // NSS (CS)
#define GPIO_Pin_SCK2 GPIO_Pin_13 // SCK
#define GPIO_Pin_MISO2 GPIO_Pin_14 // MISO
#define GPIO_Pin_MOSI2 GPIO_Pin_15 // MOSI
#define GPIOSPI2 GPIOB

#define GPIO_PinSourceSCK2 GPIO_PinSource13
#define GPIO_PinSourceMISO2 GPIO_PinSource14
#define GPIO_PinSourceMOSI2 GPIO_PinSource15

// -- Инициализация GPIO для SPI2 ----------------------------------------------
void init_GPIO_for_SPI2()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure2;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); // Запуск необходимых GPIO

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_SCK2 | GPIO_Pin_MISO2 | GPIO_Pin_MOSI2;
GPIO_Init(GPIOSPI2, &GPIO_InitStructure);

// нога NSS(CS2). она управляется программно, ПОЭТОМУ
// она конфигурируется как выход
GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_InitStructure2.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure2.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_NSS2;
GPIO_Init(GPIOSPI2, &GPIO_InitStructure2);

// Настраиваем ноги SPI2 для работы в режиме альтернативной функции
GPIO_PinAFConfig(GPIOSPI2, GPIO_PinSourceSCK2, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOSPI2, GPIO_PinSourceMISO2, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOSPI2, GPIO_PinSourceMOSI2, GPIO_AF_SPI2);

GPIO_SetBits(GPIOSPI2, GPIO_Pin_NSS2);
}


// -- Инициализация SPI2 -------------------------------------------------------
void Init_SPI2()
{
SPI_InitTypeDef SPI_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

SPI_Cmd(SPI2, DISABLE);
SPI_I2S_DeInit(SPI2);

init_GPIO_for_SPI2();

// Настройки SPI2
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_CRCPolynomial=7;

SPI_Init(SPI2,&SPI_InitStructure);

SPI_Cmd(SPI2,ENABLE);

GPIO_SetBits(GPIOSPI2, GPIO_Pin_NSS2);
}

Чтение регистра датчика:
Код
  uint8_t cmd = 0x4F;

   while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_BSY) == SET) {}
   GPIO_ResetBits(GPIOSPI2, GPIO_Pin_NSS2);

   while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) {}
   SPI_I2S_SendData(SPI2, cmd);  

   while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) {}
   uint8_t data = SPI_I2S_ReceiveData(SPI2);
  
   while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) {}
   SPI_I2S_SendData(SPI2, 0x00);

   while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) {}
   data = SPI_I2S_ReceiveData(SPI2);

   GPIO_SetBits(GPIOSPI2, GPIO_Pin_NSS2);

по идее должен выдать свое имя
Такая схема у меня работала на другом SPI но там было MOSI И MISO разными проводами, а тут все в одном, что делать не знаю пробовал поставить в инициализации SPI_Direction_1Line_Tx, но тогда мы не можем считать, а насколько я понимаю мы должны сначала прислать адрес ячейки а потом считать инфу, и все по одному проводу. Объясните пожалуйста что не так, и как заставить работать.

Сообщение отредактировал IgorKossak - Jun 11 2015, 05:59
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- BooSooV   STM32L100 + HTS221   Jun 11 2015, 05:52
- - SasaVitebsk   А SDA не наводит на мысль что интерфейс I2C? И как...   Jun 11 2015, 06:06
|- - BooSooV   Цитата(SasaVitebsk @ Jun 11 2015, 06:06) ...   Jun 11 2015, 06:12
- - Obam   Цитата(BooSooV @ Jun 11 2015, 09:52) Здра...   Jun 11 2015, 06:23
- - RabidRabbit   Таки читайте внимательней рефренс-мануал на STM32L...   Jun 11 2015, 06:24
|- - BooSooV   Цитата(RabidRabbit @ Jun 11 2015, 06:24) ...   Jun 11 2015, 06:27
|- - Obam   Если есть half-duplex, то не слушайте, а если нет,...   Jun 11 2015, 06:45
- - BooSooV   прочитал 28.3.4 Configuring the SPI for half-duple...   Jun 11 2015, 07:14
- - RabidRabbit   SPI_CR1_BIDIMODE - CR1 - это номер регистра, а не ...   Jun 11 2015, 07:24
|- - Obam   Цитата(RabidRabbit @ Jun 11 2015, 11:24) ...   Jun 11 2015, 07:41
|- - BooSooV   уважаемые электроники, я так и не понял что мне на...   Jun 11 2015, 08:12
|- - Obam   Цитата(BooSooV @ Jun 11 2015, 12:12) уваж...   Jun 11 2015, 08:23
|- - BooSooV   Цитата(Obam @ Jun 11 2015, 08:23) Да спас...   Jun 11 2015, 08:36
- - BooSooV   Здравствуйте, я опять с вопросами, написал код кот...   Jun 24 2015, 05:57
|- - Obam   Цитата(BooSooV @ Jun 24 2015, 09:57) Здра...   Jun 24 2015, 06:33
|- - BooSooV   Цитата(Obam @ Jun 24 2015, 06:33) Здравст...   Jun 24 2015, 06:42
|- - Obam   Цитата(BooSooV @ Jun 24 2015, 10:42) Осци...   Jun 24 2015, 06:44
|- - BooSooV   Цитата(Obam @ Jun 24 2015, 06:44) Обратно...   Jun 24 2015, 06:53
|- - Obam   Цитата(BooSooV @ Jun 24 2015, 10:53) ниче...   Jun 24 2015, 07:07
|- - BooSooV   Цитата(Obam @ Jun 24 2015, 07:07) Зацикли...   Jun 24 2015, 07:25
|- - Obam   Цитата(BooSooV @ Jun 24 2015, 11:25) Посм...   Jun 24 2015, 07:26
|- - BooSooV   Цитата(Obam @ Jun 24 2015, 07:26) Очень х...   Jun 24 2015, 07:40
- - Obam   "…Мойша The Beatles напел…" Синхроимпу...   Jun 24 2015, 07:59
|- - BooSooV   Цитата(Obam @ Jun 24 2015, 07:59) "…...   Jun 24 2015, 08:12
|- - Obam   Цитата(BooSooV @ Jun 24 2015, 12:05) но н...   Jun 24 2015, 08:13
- - BooSooV   надо писать 8F == 10001111 1 = читаю 0 = без сдвиг...   Jun 24 2015, 08:15
- - Obam   Кроме того, если нет записи, по-вашему, 11110010b ...   Jun 24 2015, 08:20
|- - BooSooV   Цитата(Obam @ Jun 24 2015, 08:20) Кроме т...   Jun 24 2015, 08:25
- - Obam   И из DR читается 0xFF? Повторяемость результата ес...   Jun 24 2015, 08:38
|- - BooSooV   Цитата(Obam @ Jun 24 2015, 08:32) И из DR...   Jun 24 2015, 08:40
|- - Obam   Цитата(BooSooV @ Jun 24 2015, 12:40) что ...   Jun 24 2015, 08:50
|- - BooSooV   Пойдем по списку)) смотрел на прямую DR, пишу в не...   Jun 24 2015, 09:22
|- - Obam   Стоять!!!!! Назад!!...   Jun 24 2015, 09:54
|- - BooSooV   AD5 AD4.....AD0 они ведь идут задом наперед, не на...   Jun 25 2015, 05:32
- - Obam   Шутки шутками, но доку (DS на датчик и контроллер ...   Jun 25 2015, 07:02
|- - BooSooV   увидел только что одну проблему, мой код почему то...   Jun 25 2015, 07:36
- - Obam   CODE SPI2->CR1 |= SPI_CR1_BIDIOE; //BIDIOE пере...   Jun 25 2015, 07:49
|- - BooSooV   Ну откуда??? 8 синхроимпульсов от "SPI2->D...   Jun 25 2015, 08:05
|- - Obam   Цитата(BooSooV @ Jun 25 2015, 12:05) если...   Jun 25 2015, 08:35
|- - BooSooV   Цитата(Obam @ Jun 25 2015, 08:35) • 8- or...   Jun 26 2015, 06:35
- - Obam   А что не так? 00101010b==0x2A старшим битом вперё...   Jun 26 2015, 06:48
|- - BooSooV   Меня смущает то, что в даташите на датчик, начало ...   Jun 26 2015, 07:03
|- - Obam   Цитата(BooSooV @ Jun 26 2015, 11:03) Меня...   Jun 26 2015, 07:13
|- - BooSooV   Цитата(Obam @ Jun 26 2015, 07:13) Данные ...   Jun 26 2015, 07:29
|- - Obam   Цитата(BooSooV @ Jun 26 2015, 11:29) Похо...   Jun 26 2015, 07:37
|- - BooSooV   Цитата(Obam @ Jun 26 2015, 07:37) Какой с...   Jun 26 2015, 08:00
- - Obam   "но у меня выставлен формат данных 8, и вроде...   Jun 26 2015, 07:05
|- - BooSooV   Цитата(Obam @ Jun 26 2015, 07:05) "н...   Jun 26 2015, 07:14
- - BooSooV   The first bit (bit 0) starts at the first falling ...   Jun 26 2015, 07:11
|- - Obam   Цитата(BooSooV @ Jun 26 2015, 11:11) The ...   Jun 26 2015, 07:17
- - Obam   Ну что? SPI2->CR1 |= SPI_CR1_CPOL; //исходное ...   Jun 26 2015, 07:29
|- - BooSooV   сейчас сделаю)) посмотрим что будет   Jun 26 2015, 07:33
- - Obam   Это одна команда SPI2->DR = 0x8F? Вот что хотит...   Jun 26 2015, 08:02
|- - BooSooV   Цитата(Obam @ Jun 26 2015, 08:02) Это одн...   Jun 26 2015, 08:13
- - Obam   "Вот хоть убейте…" " SPI_InitStruct...   Jun 26 2015, 08:22
|- - BooSooV   Цитата(Obam @ Jun 26 2015, 08:22) "В...   Jun 26 2015, 08:30
|- - Obam   Цитата(BooSooV @ Jun 26 2015, 12:30) ну х...   Jun 26 2015, 08:33
|- - BooSooV   Цитата(Obam @ Jun 26 2015, 08:33) Ни фига...   Jun 26 2015, 09:24
- - Obam   http://electronix.ru/forum/index.php?showt...t...   Jun 26 2015, 09:25
|- - BooSooV   Цитата(Obam @ Jun 26 2015, 09:25) http://...   Jun 26 2015, 09:30
|- - Obam   Цитата(BooSooV @ Jun 26 2015, 13:30) на п...   Jun 26 2015, 09:35
|- - BooSooV   убрал, сигналы наложились, в линии тактирования 8 ...   Jun 26 2015, 10:01
|- - Obam   Не " наложились" а придвинулись; если да...   Jun 26 2015, 10:08
|- - BooSooV   да они так придвинулись что осталось всего 8 синхр...   Jun 26 2015, 10:19
|- - Obam   По моему, экспериментов - достаточно; настал момен...   Jun 26 2015, 10:40
- - IgorKossak   Obam, BooSooV, перечитайте ещё раз правила, особен...   Jun 26 2015, 17:09
- - BooSooV   После долгих мучений перешел на вот такой код иниц...   Jul 13 2015, 06:58
- - Obam   Не 0xBC, а 0x8F ! Число 0xBC дожно быть возвра...   Jul 14 2015, 08:26
- - BooSooV   да хоть так хоть так, все равно ничего не отвечает   Jul 15 2015, 05:22
|- - Obam   Цитата(BooSooV @ Jul 15 2015, 09:22) да х...   Jul 15 2015, 07:58
- - BooSooV   делал обмен по такому же интерфейсу(по одному пров...   Jul 15 2015, 06:39
- - RoadRunner   Интересно, чем все закончилось)) А то у меня анало...   Sep 28 2015, 08:31


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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 16:42
Рейтинг@Mail.ru


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