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

 
 
> 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
 
Start new topic
Ответов
BooSooV
сообщение Jun 26 2015, 07:11
Сообщение #2


Участник
*

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



The first bit (bit 0) starts at the first falling edge of SCL after the falling edge
of CS while the last bit (bit 15, bit 23,...) starts at the last falling edge of SCL just before the
rising edge of CS.
Вот выдержка из даташита, которая говорит тоже самое
Можно как то настроить чтобы он не по возрастанию читал линию данных а по падению
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
|- - 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
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 12:43
Рейтинг@Mail.ru


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