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

Взаимодействие устройств IoT от Microchip с облаком Google

Благодаря облачным технологиям появилась возможность реализовать сложные проекты на базе микроконтроллера путем перераспределения вычислительной нагрузки между микроконтроллером и облаком. Простые в использовании отладочные платы, такие как AVR- и PIC-IoT WG, позволяют выполнять ресурсоемкие вычисления, передавая их в облако.
Подробнее

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

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

Подробнее

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

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

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

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

Share this post


Link to post
Share on other sites

LDH-25/65 – новые серии повышающих DC/DC LED-драйверов от Mean Well

Компания Mean Well расширила семейство популярных повышающих DC/DC LED-драйверов LDH двумя новыми сериями меньшей и большей мощности – LDH-25 и LDH-65, соответственно. Новые серии, обладая высоким КПД, применимы для изготовления экономичных светодиодных светильников с питанием от автономных источников тока, в том числе – на транспорте. Конструктивно драйверы выпускаются в двух различных вариантах.
Подробнее

    // Включенеие индкатора
    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 Andrew_Rain
      Здравствуйте! У меня адаптер питания от телевизора Smart TV модели UE32F6800AB потерялся, какие характеристики адаптера питания нужны, чтобы телевизор нормально работал? Просьба рассказать максимально подробно, по каким параметрам вы подобрали адаптер.

    • 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...