|
SPI1 в STM32F429 считывает 0 в младший бит |
|
|
|
 |
Ответов
|
Jun 19 2016, 22:23
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(ViKo @ Jun 20 2016, 01:14)  Ага, нашел, jumper. Он еще и точность имеет, и мощность рассеивания.  Я буду называть перемычками, как принято.  Цитата(ViKo @ Jun 19 2016, 19:28)  У меня есть STM32F429I-Disco. Если выложите код, похожий на нерабочий, могу посмотреть. Но с нуля писать лень. Вдруг не не заработает.  Вот такой код. Только теперь вместо нуля всегда читает единицу и только в первом интерфейсе. CODE HAL_StatusTypeDef SPI_WaitOnFlagTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus Status, uint32_t Timeout) { uint32_t start = jiffies; while(__HAL_SPI_GET_FLAG(hspi, Flag) == Status){ if(jiffies - start >= Timeout){ return -HAL_TIMEOUT; } } return HAL_OK; } #if 0 /* This funtion is used to transmit and receive data * with SPI1 * data --> data to be transmitted * returns received value */ uint8_t SPI1_send(uint8_t data){
SPI1->DR = data; // write data to be transmitted to the SPI data register while( !(SPI1->SR & SPI_I2S_FLAG_TXE) ); // wait until transmit complete while( !(SPI1->SR & SPI_I2S_FLAG_RXNE) ); // wait until receive complete while( SPI1->SR & SPI_I2S_FLAG_BSY ); // wait until SPI is not busy anymore return SPI1->DR; // return received data from SPI data register } #endif
int SPI_Transmit1(SPI_HandleTypeDef *hspi, uint8_t* val, uint32_t timeout) { FlagStatus Status; __HAL_SPI_ENABLE(hspi); hspi->Instance->DR = *val; Status = SPI_WaitOnFlagTimeout(hspi, SPI_FLAG_TXE, RESET, timeout); if(HAL_OK != Status){ return Status; } Status = SPI_WaitOnFlagTimeout(hspi, SPI_FLAG_RXNE, RESET, timeout); if(HAL_OK != Status){ return Status; } Status = SPI_WaitOnFlagTimeout(hspi, SPI_FLAG_BSY, SET, timeout); *val = hspi->Instance->DR; return Status; }
int write_spi_reg(uint8_t chip_id, uint8_t reg_addr, uint8_t val) { SPI_HandleTypeDef* hspi; uint8_t buf[SPI_WRITE_LEN]; uint8_t i; uint8_t id; GPIO_TypeDef* port; uint16_t pin;
HAL_StatusTypeDef ret;
if(CHIPS_AMOUNT <= chip_id){ return -WRONG_PARAMETER; }
hspi = hspi1; id = 0 port = GPIOA; pin = GPIO_PIN_4;
buf[0] = WR_SPI_CMD(id); buf[1] = reg_addr; buf[2] = val;
for(i = 0; i < SPI_WRITE_LEN; i++){ HAL_GPIO_WritePin(port, pin, 0); short_delay(7); ret = SPI_Transmit1(hspi, &buf[i], SPI_TIMEOUT); HAL_GPIO_WritePin(port, pin, 1); short_delay(7);
if(HAL_OK != ret){ responce_handle(ret); return -ret; } } return NO_ERROR; }
int read_spi_reg(uint8_t chip_id, uint8_t reg_addr) { SPI_HandleTypeDef* hspi; uint8_t buf[2]; uint8_t id; HAL_StatusTypeDef ret; GPIO_TypeDef* port; uint16_t pin; chip_interface_t* chip_if;
if(CHIPS_AMOUNT <= chip_id){ return; } hspi = hspi1; id = 0 port = GPIOA; pin = GPIO_PIN_4;
buf[0] = RD_SPI_CMD(id); buf[1] = reg_addr;
HAL_GPIO_WritePin(port, pin, 0); short_delay(7); ret = SPI_Transmit1(hspi, &buf[0], SPI_TIMEOUT);
HAL_GPIO_WritePin(port, pin, 1); short_delay(7); HAL_GPIO_WritePin(port, pin, 0); short_delay(7); ret = SPI_Transmit1(hspi, &buf[1], SPI_TIMEOUT); HAL_GPIO_WritePin(port, pin, 1); short_delay(7);
if(HAL_OK != ret){ responce_handle(ret); return (uint16_t) -1; }
HAL_GPIO_WritePin(port, pin, 0); short_delay(7); ret = SPI_Transmit1(hspi, &buf[0], SPI_TIMEOUT); HAL_GPIO_WritePin(port, pin, 1); short_delay(7);
if(HAL_OK != ret){ responce_handle(ret); }
return (uint32_t)buf[0]; }
Конфигурация: Registers SPI_CR1 = 0x0000015F SPI_CR2 = 0x00000004
|
|
|
|
Сообщений в этой теме
Tarbal SPI1 в STM32F429 считывает 0 в младший бит Jun 16 2016, 00:06 RadiatoR Попробуйте прочитать по флагу BSY. Вообще есть ли ... Jun 16 2016, 05:11 scifi Цитата(RadiatoR @ Jun 16 2016, 08:11) По... Jun 16 2016, 07:13 Tarbal Цитата(RadiatoR @ Jun 16 2016, 09:11) По... Jun 16 2016, 12:37  RadiatoR Цитата(Tarbal @ Jun 16 2016, 15:37) Оба к... Jun 16 2016, 18:56  adnega Цитата(Tarbal @ Jun 16 2016, 15:37) Но у ... Jun 16 2016, 19:38   Tarbal Цитата(adnega @ Jun 16 2016, 23:38) Видел... Jun 17 2016, 11:59    adnega Цитата(Tarbal @ Jun 17 2016, 14:59) На фо... Jun 17 2016, 12:15  ViKo Цитата(Tarbal @ Jun 16 2016, 15:37) у мен... Jun 17 2016, 18:52   adnega Цитата(ViKo @ Jun 17 2016, 21:52) Повесьт... Jun 17 2016, 18:56    ViKo Цитата(adnega @ Jun 17 2016, 21:56) Дык, ... Jun 17 2016, 20:12     adnega Цитата(ViKo @ Jun 17 2016, 23:12) И де вы... Jun 17 2016, 22:46      ViKo Цитата(adnega @ Jun 18 2016, 01:46) На вы... Jun 18 2016, 06:32       adnega Цитата(ViKo @ Jun 18 2016, 09:32) "П... Jun 18 2016, 08:40        ViKo Цитата(adnega @ Jun 18 2016, 11:40) На пи... Jun 18 2016, 10:45         adnega Цитата(ViKo @ Jun 18 2016, 13:45) С желез... Jun 18 2016, 11:24          ViKo Цитата(adnega @ Jun 18 2016, 14:24) С чег... Jun 18 2016, 13:01           adnega Цитата(ViKo @ Jun 18 2016, 16:01) С перво... Jun 18 2016, 13:24 SasaVitebsk А какая настройка? Jun 16 2016, 05:45 ViKo Смотря, каким фронтом записываете и читаете. Надо ... Jun 16 2016, 06:06 RadiatoR Вообще сам флаг BSY для приема использовать не пра... Jun 16 2016, 07:34 ViKo Что-то мне подсказывает, что если прочитать руково... Jun 17 2016, 13:16 Tarbal Цитата(ViKo @ Jun 17 2016, 17:16) Не дума... Jun 17 2016, 14:47 Alex11 А у Вас что, на клоке вход и нет ни сигнала ни под... Jun 17 2016, 16:02 Tarbal Цитата(Alex11 @ Jun 17 2016, 20:02) А у В... Jun 17 2016, 18:23 ViKo То, что читалось 0xFE, связано с работой не по ман... Jun 18 2016, 14:07 adnega Цитата(ViKo @ Jun 18 2016, 17:07) Вы прос... Jun 18 2016, 19:25  ViKo Цитата(adnega @ Jun 18 2016, 22:25) Посмо... Jun 19 2016, 15:28   adnega Цитата(ViKo @ Jun 19 2016, 18:28) У меня ... Jun 19 2016, 18:21    adnega Цитата(adnega @ Jun 19 2016, 21:21) ошибк... Jun 19 2016, 19:16     ViKo Цитата(adnega @ Jun 19 2016, 22:16) Вопро... Jun 19 2016, 19:59 Genadi Zawidowski Код отсылки/приёма байта по SPI в студию... Jun 18 2016, 20:04 adnega Цитата(Genadi Zawidowski @ Jun 18 2016, 23... Jun 19 2016, 08:38 Tarbal Вроде нашел в чем дело.
Я поначалу не знал, что ха... Jun 19 2016, 16:42 ViKo Цитата(Tarbal @ Jun 19 2016, 19:42) Бываю... Jun 19 2016, 18:13  Tarbal Цитата(ViKo @ Jun 19 2016, 22:13) Пе-ре-м... Jun 19 2016, 18:57  Tarbal Цитата(ViKo @ Jun 19 2016, 22:13) Пе-ре-м... Jun 19 2016, 20:58 Alex11 http://www.yageo.com/NewPortal/_en/search/search-1... Jun 19 2016, 20:53 Tarbal А замена на такую функцию (без аппаратной поддержк... Jun 20 2016, 00:02 ViKo С HAL мучайтесь сами, мне это не интересно. У меня... Jun 20 2016, 04:52 Tarbal Цитата(ViKo @ Jun 20 2016, 08:52) С HAL м... Jun 20 2016, 12:20  ViKo Цитата(Tarbal @ Jun 20 2016, 15:20) Я уже... Jun 20 2016, 12:52   Tarbal Цитата(ViKo @ Jun 20 2016, 16:52) И какие... Jun 21 2016, 13:47 ViKo Еще бы и программный ногодрыг не работал... Четы... Jun 21 2016, 14:28 adnega Цитата(ViKo @ Jun 21 2016, 17:28) Заметьт... Jun 21 2016, 17:24 Tarbal Цитата(ViKo @ Jun 21 2016, 18:28) Еще бы ... Jun 21 2016, 23:31  ViKo Цитата(Tarbal @ Jun 22 2016, 02:31) Не бу... Jun 22 2016, 05:04   Tarbal Цитата(ViKo @ Jun 22 2016, 09:04) И что с... Jun 22 2016, 21:43 ViKo Ссылку на тему на ST выдайте, please!
"чт... Jun 23 2016, 04:39 Tarbal Цитата(ViKo @ Jun 23 2016, 08:39) Ссылку ... Jun 23 2016, 10:32  ViKo Цитата(Tarbal @ Jun 23 2016, 13:32) Вы ка... Jun 23 2016, 20:24 Tarbal Цитата(ViKo @ Jun 23 2016, 07:39) Ссылку ... Dec 16 2016, 02:42 RadiatoR Извиняюсь, что немного не в тему, но ситуация тоже... Jun 23 2016, 17:45 Obam Цитата(RadiatoR @ Jun 23 2016, 21:45) Из... Jun 24 2016, 06:55 RadiatoR Цитата(RadiatoR @ Jun 23 2016, 20:45) Ил... Jun 24 2016, 07:40  Obam Цитата(RadiatoR @ Jun 24 2016, 11:40) 48... Jun 24 2016, 07:57 RadiatoR наврал. 24/93 Jun 24 2016, 09:20 Obam Цитата(RadiatoR @ Jun 24 2016, 13:20) на... Jun 24 2016, 09:50 Tarbal Я бы провел серию тестов.
Вот такую функцию (сами ... Jun 24 2016, 10:13 RadiatoR Не требуется, я уже все сделал.
В системе тока 1 п... Jun 24 2016, 12:24
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|