Jump to content
dima040891

Работа с драйвером семисегментного индикатора STLED316S

Recommended Posts

Posted (edited)

Приветсвую!
Кто ни будь работал с микросхемой STLED316S?  Это драйвер семисегментонго индикатора.
Можете привести минимальный кусок кода который выводит любую цифру на дисплей. Из документации не пойму как с ней работать...
На форумах инфы почти нет. Из того что есть тоже толку мало. Буду рад любой инфе по этой микросхеме.

Ещё правильно же понимаю биты по SPI передаются младшим вперёд, а такты нужно передавать инверсные?

В качестве МК применяю STM32.

Edited by dima040891

Share this post


Link to post
Share on other sites
17 минут назад, dima040891 сказал:

биты по SPI передаются младшим вперёд

Да.

17 минут назад, dima040891 сказал:

такты нужно передавать инверсные?

Достаточно сравнить диаграммы работы SPI из даташита на МК и микруху, затем выбрать требуемый режим работы.

17 минут назад, dima040891 сказал:

Из документации не пойму как с ней работать.

Все указано в разделе Device configuration. Там и команд почти нет.

Share this post


Link to post
Share on other sites
Posted (edited)
5 минут назад, BARS_ сказал:

//////////////

Если работали с этом драйвером можете привести пример кода?

Edited by Falconist
Оверквотинг

Share this post


Link to post
Share on other sites

Приглашаем на вебинар «Умный и безопасный дом от STMicroelectronics – строим вмеSTе!» (23.06.2021)

Приглашаем 23/06/2021 всех желающих принять участие в вебинаре, посвященном проектированию и разработке систем умного дома на базе компонентов STMicroelectronics. Экосистема продукции STMicroelectronics включает в себя как электронные компоненты, так и средства разработки, готовые стеки протоколов и законченные примеры кода. Предлагаемые ресурсы позволят разработчику легко построить каркас системы и быстро создать прототип своего приложения. На вебинаре также расскажем о беспроводных интерфейсах – ведь благодаря поддержке стандартов BLE и ZigBee разработчики смогут при необходимости интегрировать устройства сторонних производителей и создавать открытые системы.
Подробнее

Тактовые кнопки Panasonic - высококачественная коммутация в миниатюрном исполнении

Panasonic, один из мировых лидеров по производству высококачественных электромеханических компонентов, и Компэл представляют масштабное расширение складской программы. В настоящее время на складе Компэл доступны ведущие серии SMD-тактовых переключателей Panasonic в миниатюрных корпусах. Линейка тактовых кнопок Panasonic отличается многообразием компактных переключателей различных типоразмеров, форм штока и выводов. Переключатели отвечают важнейшим требованиям в ответственных применениях.

Подробнее

Posted (edited)
32 минуты назад, BARS_ сказал:

////////////////

Потому-что мой код не работает. Из документации мне точно не ясно как включить дисплей. За ссылку спасибо, но все же разные микросхемы, хоть и со схожим функционалом.

Edited by Falconist
Оверквотинг

Share this post


Link to post
Share on other sites

Решения TE Connectivity для 112 Gbps архитектуры и серверов. Соединители STRADA Whisper

Данная статья является первой из публикаций, описывающих решения компании TE Connectivity для высокоскоростных соединений. Она посвящена соединителям и кабельным сборкам серии STRADA Whisper, главная особенность которых – поддержка работы с технологией PAM-4 и скорости передачи до 112 Гбит/с.
Подробнее

    // Включенеие индкатора
    STLED_data[0] = 0x0D;

    HAL_GPIO_WritePin(GPIOC, oSTLED316S_STB2_Pin, GPIO_PIN_RESET);
    HAL_SPI_Transmit(&hspi1, STLED_data, 1, 10000);
    HAL_GPIO_WritePin(GPIOC, oSTLED316S_STB2_Pin, GPIO_PIN_SET);

    vTaskDelay(1);

    // Вывод данных на индикатор
    STLED_data[0] = 0x00; // Вывод с автоикрементом адреса
    STLED_data[1] = 0x3f;
    STLED_data[2] = 0x5b;
    STLED_data[3] = 0x4f;
    STLED_data[4] = 0x66;
    STLED_data[5] = 0x6d;

    STLED_data[6] = 0x07;
    STLED_data[7] = 0x07;

    HAL_GPIO_WritePin(GPIOC, oSTLED316S_STB2_Pin, GPIO_PIN_RESET);
    HAL_SPI_Transmit(&hspi1, &STLED_data[0], 5, 10000);
    HAL_GPIO_WritePin(GPIOC, oSTLED316S_STB2_Pin, GPIO_PIN_SET);


Использую такой код. Ничего не происходит, индикатор не зажигается(

Share this post


Link to post
Share on other sites
2 часа назад, dima040891 сказал:

Использую такой код. Ничего не происходит, индикатор не зажигается(

Вы на входы этой микросхемы подключите логический анализатор, тогда будет видно, что за коды вы в реальности отправляете.
И отправляете ли.

Share this post


Link to post
Share on other sites

Код рабочий. В инициализации SPI нужно было добавить слудующее:

  hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; // Инверсные такты или считывание данных по спаду clk
  hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; // Считывание по заднему фронту

Я и до этого так пробовал, но видимо последовательность команд была неверна. 
Теперь работает, всем спасибо за участие.
 

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

  • Similar Content

    • By Михаил Карнаухов
      В общем, во встроенных библиотеках Proteus нет МК PIC12F635. И мне нужна какая-нибудь сторонняя библиотека, что бы там был этот МК
    • By Sergey Krugov
      Доброго времени суток дня и ночи!!! Я конечно понимаю, что за это время уже успел надоесть вам, но прошу откликнуться к просьбе о помощи. 
      Проблема заключается в следующем:

      В данной схеме используется Atmega8
      Фьюзы:

      При симуляции схемы происходит следующее:


      А дальше ничего не происходит. 
      Возникает также проблема такого рода: 

      Почему-то Протеус ругается на это,  но при удалении этой строки из кода в Протеусе, схема начинает вроде бы работать, но дальше setup на ЖКИ ничего не появлется. Очень прошу помочь понять, что не так. Мб на железе это всё бы и работало. Как разрешить эту проблему в программе?
      Я буду очень благодарен всем, кто откликнется на мою проблему. Надеюсь вы не оставите это без внимания. Очень надеюсь...
    • By Anton Chehonin
      Вот сам код программ
       
      Текст программы МК
      /*******************************************************
      Chip type : ATmega8
      Program type : Application
      AVR Core Clock frequency: 8,000000 MHz
      Memory model : Small
      External RAM size : 0
      Data Stack size : 256
      *******************************************************/

      #include <mega8.h>
      #include <delay.h>

      // Alphanumeric LCD functions
      #include <alcd.h>

      // Standard Input/Output functions
      #include <stdio.h>
      #include <stdlib.h>

      // Declareyourglobalvariableshere

      float s;
      unsigned long int k0=0,k1=0,k2=0,k3=0,k0123=0;
      unsigned long int k4=0,k5=0,k6=0,k7=0;//k4567=0;
      unsigned long int k8=0,k9=0,k10=0,k11=0;//k891011=0;
      unsigned long int k12=0,k13=0,k14=0,k15=0;//k12131415=0;
      unsigned long int k16=0,k17=0;
      char k=0;

      void main(void)
      {
      // Declare your local variables here

      char buffer[20];


      char a,b,c,d,e,f;
      // Присваивание переменным a,b,c численные значения 63 05 00 01 CF A1
      a=0b01100011;
      //63
      b=0b00000101;
      //05
      c=0b00000000;
      //00
      d=0b00000001;
      //01
      e=0b11001111;
      //CF
      f=0b10100001;
      //A1

      DDRD.2=1;
      PORTD.2=0;

      // USART initialization
      // Communication Parameters: 8 Data, 1 Stop, No Parity
      // USART Receiver: On
      // USART Transmitter: On
      // USART Mode: Asynchronous
      // USART Baud Rate: 9600
      UCSRA=(0«RXC) | (0«TXC) | (0«UDRE) | (0«FE) | (0«DOR) | (0«UPE) | (0«U2X) | (0«MPCM);
      UCSRB=(0«RXCIE) | (0«TXCIE) | (0«UDRIE) | (1«RXEN) | (1«TXEN) | (0«UCSZ2) | (0«RXB8) | (0«TXB8);
      UCSRC=(1«URSEL) | (0«UMSEL) | (0«UPM1) | (0«UPM0) | (0«USBS) | (1«UCSZ1) | (1«UCSZ0) | (0«UCPOL);
      UBRRH=0x00;
      UBRRL=0x33;


      // Alphanumeric LCD initialization
      // Connections are specified in the
      // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
      // RS - PORTС Bit 0
      // RD - PORTС Bit 1
      // EN - PORTС Bit 2
      // D4 - PORTС Bit 3
      // D5 - PORTС Bit 4
      // D6 - PORTС Bit 5
      // D7 - PORTD Bit 7
      // Characters/line: 20
      lcd_init(20);
      lcd_clear();
      delay_ms(1000);
      while (1)
      {
      printf("%c%c%c%c%c%c",a,b,c,d,e,f); // отправка в порт

      //принимаем байты
      k=getchar(); // 0 байт
      if (k==99) {PORTD.2=1;}
      k0=getchar(); // 1 байт Активная энергия+
      k1=getchar(); // 2 байт
      k2=getchar(); // 3 байт
      k3=getchar(); // 4 байт
      k4=getchar(); // 1 байт Активная энергия-
      k5=getchar();
      k6=getchar();
      k7=getchar();
      k8=getchar(); // 1 байт Реактивная энергия+
      k9=getchar();
      k10=getchar();
      k11=getchar();
      k12=getchar(); // 1 байт Реактивная энергия-
      k13=getchar();
      k14=getchar();
      k15=getchar();
      k16=getchar();
      k17=getchar(); // 19 байт


      k0=k0«24;
      k1=k1«16;
      k2=k2«8;
      k0123=k0|k1|k2|k3;


      s=k0123;
      sprintf(buffer,"A+=%.4fkWh",s/2500);
      lcd_gotoxy(0,0);
      lcd_puts(buffer);

      // k4=k4«24;
      // k5=k5«16;
      // k6=k6«8;
      // k4567=k4|k5|k6|k7;
      // s=k4567;
      // sprintf(buffer,"A-=%.4fkWh",s/2500);
      // lcd_gotoxy(0,1);
      // lcd_puts(buffer);
      //
      // k8=k8«24;
      // k9=k9«16;
      // k10=k10«8;
      // k891011=k8|k9|k10|k11;
      //
      //
      // s=k891011;
      // sprintf(buffer,"R+=%.4fkVarh",s/2500);
      // lcd_gotoxy(0,2);
      // lcd_puts(buffer);
      //
      //
      // k12=k12«24;
      // k13=k13«16;
      // k14=k14«8;
      // k12131415=k12|k13|k14|k15;
      // s=k12131415;
      // sprintf(buffer,"R-=%.4fkVarh",s/2500);
      // lcd_gotoxy(0,3);
      // lcd_puts(buffer);

      delay_ms(1000);
      lcd_clear();

      }
      }
    • By Daniil Mask
      Здравствуйте, не могу понять как сделать такую систему на базе электромоторчика.
      Принцип работы:
      Катушка с нитками установлена на электромоторчике.
      нитку легко можно разматывать руками, а моторчик держит эту нить под натяжением но так чтобы не рвал.
      Длина нити около 20 метров.
      и как только мы отпускаем нить она заматывалась обратно.
      все это должно быть максимально маленьким и потребляло мало электричества.
      Ну на сколько это возможно. 
×
×
  • Create New...