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

 
 
> stm32f103 + 16c754, Внешний uart.
cpl
сообщение Mar 22 2011, 12:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Здравствуйте
Необходимо подключить дополнительные уарты (помимо штатных) к stm32f103,
решено поставить tl16c754b (внутри 4-uart).
tl16c754b подключена к stm32 как внешняя sram, используется в tl16c754b только первый cs.
Не могу прочитать приходящие байты, всегда читается RHR=0 (в независимости от того что пришло)
Пробовал смотреть логически анализатором шину, тоже самое всегда RHR=0,
если читаю другой регистр то значения соответствуют записанным,
пробовал понизить частоту тактирования tl16c754 результат один и тот же.
tl16c754 настроена на работу в dma0 + fifo, при приеме байта прерывания генерируются.
Замечена была следующая странность поведения tl16c754:
пришел байт - переходим в прерывание, считывается RHR=0
и так пока количество пришедших байт не станет равно RX TRIGGER LEVEL,
после прерывания прекращают генерироваться tl16c754.
Получается что RHR не был считан ?

Код инициализации tl16c754(clk=7372800Гц):
Код
      
LCR_UART1 = LCR_DEV_LANCH_ENABLE;     /* Enable divisor access */
DLL_UART1 = 0x04;//d;
DLM_UART1 = 0x00;// 115200
LCR_UART1 = LCR_WORD_8BIT | LCR_NO_PARITY | LCR_STOP_BIT1;     /* Set 8,N,1 data        */
FCR_UART1 = FCR_TRIGER_RX_FIFO_60_CHAR | FCR_DMA_MODE0 | FCR_RST_TX_FIFO | FCR_RST_RX_FIFO | FCR_ENABLE_FIFO;
IER_UART1 = IER_RX_DATA;
MCR_UART1 = 0;


Код инициализации sram stm32:
Код
/*-- FSMC Configuration ------------------------------------------------------*/
  p.FSMC_AddressSetupTime = 0;
  p.FSMC_AddressHoldTime = 0;
  p.FSMC_DataSetupTime = 250;
  p.FSMC_BusTurnAroundDuration = 0;
  p.FSMC_CLKDivision = 0;
  p.FSMC_DataLatency = 0;
  p.FSMC_AccessMode = FSMC_AccessMode_A;

  FSMC_NORSRAMInitStructure.FSMC_Bank                 = FSMC_Bank1_NORSRAM1;
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux         = FSMC_DataAddressMux_Disable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType             = FSMC_MemoryType_SRAM;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth         = FSMC_MemoryDataWidth_8b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode         = FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait         = FSMC_AsynchronousWait_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity         = FSMC_WaitSignalPolarity_Low;
  FSMC_NORSRAMInitStructure.FSMC_WrapMode             = FSMC_WrapMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive         = FSMC_WaitSignalActive_BeforeWaitState;
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation         = FSMC_WriteOperation_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal             = FSMC_WaitSignal_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode             = FSMC_ExtendedMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst             = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct     = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct         = &p;

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

  /*!< Enable FSMC Bank1_SRAM Bank */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);


Код прерывания от внешнего вывода stm32:
Код
void EXTI0_IRQHandler(void)
{
    uint8_t c;

      c = RHR_UART1;
      THR_UART1 = c;

    EXTI_ClearITPendingBit(EXTI_Line0);
}


Регистры tl16c754:
Код
#define RHR_UART      (0x00)  /*Receiver Buffer Register of chA */
#define THR_UART      (0x00)  /*Transmitter Holding Register of chA */
#define IER_UART      (0x01)  /*Interrupt Enable Register of chA */
#define IIR_UART      (0x02)  /*Interrupt Identify Register of chA */

/* BANK RAM FOR STM32 NE1 NE2 NE3 NE4 -> CSA CSB CSC CSD */
#define BANK1_EXT_SRAM    (0x60000000)

#define RHR_UART1      *((volatile uint8_t*)(BANK1_EXT_SRAM + RHR_UART))  /*Receiver Buffer Register of chA */
...............

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- cpl   stm32f103 + 16c754   Mar 22 2011, 12:16
- - cpl   Разобрался, оказалось что глючат переходные отвест...   Mar 20 2012, 10:04
- - Mareng   Ситуация один в один. Проверил уже все что можно, ...   May 29 2012, 09:10
- - aaarrr   Тайминги проверьте: если не ошибаюсь, длительность...   May 29 2012, 09:15
- - Mareng   Изначально было около 2 тактов частоты, увеличивал...   May 29 2012, 09:19
|- - cpl   Методика проста(при небольшом условие – требуется ...   May 29 2012, 09:20
|- - Mareng   cpl, т.е. все заработало с этим же кодом инициализ...   May 29 2012, 09:44
||- - cpl   Инит: Код // init 16c754 LCR_UART1 = LCR_DE...   May 29 2012, 10:29
|- - cpl   Цитата(cpl @ May 29 2012, 12:20) какой ча...   May 29 2012, 10:37
||- - Mareng   14745600   May 29 2012, 10:37
|- - cpl   Цитата(cpl @ May 29 2012, 12:20) соблюдаю...   May 29 2012, 10:40
|- - Mareng   Цитата(cpl @ May 29 2012, 17:40) импульс ...   May 29 2012, 10:44
|- - cpl   Цитата(Mareng @ May 29 2012, 13:44) Длите...   May 29 2012, 10:54
|- - Mareng   Цитата(cpl @ May 29 2012, 17:54) Не полен...   May 29 2012, 10:58
|- - cpl   Цитата(Mareng @ May 29 2012, 13:58) Они м...   May 29 2012, 11:04
|- - Mareng   Цитата(cpl @ May 29 2012, 18:04) В регист...   May 29 2012, 11:07
|- - cpl   Цитата(Mareng @ May 29 2012, 14:07) Стави...   May 31 2012, 12:26
- - Mareng   Изменил скорость на линии чтения(RD) с 50Mhz на 2M...   May 29 2012, 10:33
|- - aaarrr   Цитата(Mareng @ May 29 2012, 14:33) какие...   May 29 2012, 10:38
- - scifi   Ух, сколько сложностей. Не проще ли было поставить...   May 29 2012, 10:49
|- - aaarrr   Цитата(scifi @ May 29 2012, 14:49) Ух, ск...   May 29 2012, 10:53
- - Mareng   Во время разборок с этим чудом от тексаса, очень ж...   May 29 2012, 10:51


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:18
Рейтинг@Mail.ru


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