Микросхемы sm5266ph, sm162065
Попробуйте строчку инициализации матрицы заменить на
#define RGB64x32_s8_Max 3,64,32,8,0 // 64x32 s8
DMD_RGB_SHIFTREG_ABC<RGB64x32_s8_Max, COLOR_4BITS> dmd(mux_list, DMD_PIN_nOE, DMD_PIN_SCLK, custom_rgbpins, DISPLAYS_ACROSS, DISPLAYS_DOWN, ENABLE_DUAL_BUFFER);
и посмотрите, появится ли хоть какое-то изображение.
И еще перечислите полностью, какие пины используете.
(уехал на дачу, прочитаю вечером)
не знаю что в таком случае посоветовать. Пины Ваши вроде бы нормальные.
На всякий случай выложите скетч, которым тестировали.
Скетч из примеров брал dmd_rgb.ino
А прошиваете плату как - через USB бутлоадер или через Ст-линк?
Попробуйте заменить пины PB3 PB4 на какие-то другие на порту B - например PB10 PB11
St-link
тогда меняйте pb3 pb4 - они совместно с ст-линком не работают
И после этого попробуйте снова как стандартный пример, так и с исправлением выше - с классом
DMD_RGB_SHIFTREG_ABC
Исправил на РВ10 и 11 Со стандартным примером появился синий квадрат (на фото)
С классом ничего совсем не появляется
Еще раз - выложите пожалуйста код, который запускаете.
Не надо писать что это стандартный пример - просто выложите код именно так, как загружаете в плату
#include <DMD_Config.h>
#include <DMD_Font.h>
#include <DMD_Monochrome_Parallel.h>
#include <DMD_MonoChrome_SPI.h>
#include <DMD_RGB.h>
#include <DMD_STM32a.h>
#include <SPI_DMA.h>
#include <stm_int.h>
/*--------------------------------------------------------------------------------------
Demo for RGB panels
DMD_STM32a example code for STM32F103xxx board
------------------------------------------------------------------------------------- */
#include "DMD_RGB.h"
// Fonts includes
#include "st_fonts/UkrRusArial14.h"
#pragma GCC diagnostic ignored "-Wnarrowing"
#pragma GCC diagnostic ignored "-Woverflow"
#include "gfx_fonts/GlametrixLight12pt7b.h"
#include "gfx_fonts/GlametrixBold12pt7b.h"
#pragma GCC diagnostic warning "-Wnarrowing"
#pragma GCC diagnostic warning "-Woverflow"
//Number of panels in x and y axis
#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
// Enable of output buffering
// if true, changes only outputs to matrix after
// swapBuffers(true) command
// If dual buffer not enabled, all output draw at matrix directly
// and swapBuffers(true) cimmand do nothing
#define ENABLE_DUAL_BUFFER false
// ==== DMD_RGB pins ====
// mux pins - A, B, C... all mux pins must be selected from same port!
#define DMD_PIN_A PB6
#define DMD_PIN_B PB5
#define DMD_PIN_C PB11
#define DMD_PIN_D PB10
#define DMD_PIN_E PB8
// put all mux pins at list
uint8_t mux_list[] = { DMD_PIN_A , DMD_PIN_B , DMD_PIN_C };
// pin OE must be one of PB0 PB1 PA6 PA7
#define DMD_PIN_nOE PB0
#define DMD_PIN_SCLK PB7
// Pins for R0, G0, B0, R1, G1, B1 channels and for clock.
// By default the library uses RGB color order.
// If you need to change this - reorder the R0, G0, B0, R1, G1, B1 pins.
// All this pins also must be selected from same port!
uint8_t custom_rgbpins[] = { PA15, PA0,PA1,PA2,PA3,PA4,PA5 }; // CLK, R0, G0, B0, R1, G1, B1
DMD_RGB <RGB64x32plainS16, COLOR_4BITS> dmd(mux_list, DMD_PIN_nOE, DMD_PIN_SCLK, custom_rgbpins, DISPLAYS_ACROSS, DISPLAYS_DOWN, ENABLE_DUAL_BUFFER);
// other options are:
// <RGB32x16plainS8> - 32x16 matrix with 8scans
// <RGB80x40plainS20> - 80x40 matrix with 20scans
// <RGB64x64plainS32> - 64x64 matrix with 32scans
// Color depth - <COLOR_4BITS> or <COLOR_1BITS>
// --- Define fonts ----
// DMD.h old style font
DMD_Standard_Font UkrRusArial_F(UkrRusArial_14);
// GFX font with sepatate parts for Latin and Cyrillic chars
DMD_GFX_Font GlametrixL((uint8_t*)&GlametrixLight12pt7b, (uint8_t*)&GlametrixLight12pt8b_rus, 0x80, 13);
/*--------------------------------------------------------------------------------------
UTF8 char recoding
--------------------------------------------------------------------------------------*/
int utf8_rus(char* dest, const unsigned char* src) {
uint16_t i, j;
for (i = 0, j = 0; src[i]; i++) {
if ((src[i] == 0xD0) && src[i + 1]) { dest[j++] = src[++i] - 0x10; }
else if ((src[i] == 0xD1) && src[i + 1]) { dest[j++] = src[++i] + 0x30; }
else dest[j++] = src[i];
}
dest[j] = '\0';
return j;
}
/*--------------------------------------------------------------------------------------
setup
Called by the Arduino architecture before the main loop begins
--------------------------------------------------------------------------------------*/
void setup(void)
{
// initialize DMD objects
dmd.init();
}
/*--------------------------------------------------------------------------------------
loop
Arduino architecture main loop
--------------------------------------------------------------------------------------*/
void loop(void)
{
// create foreground colors
uint16_t col[] = {
dmd.Color888(255,0, 0), // red
dmd.Color888(0, 255, 0), // green
dmd.Color888(0, 0, 255) // blue
};
uint16_t bg = 0; // background - black
int col_cnt = 3; // color count
// text
char s[] = "Привет Ардуино!";
// transcode message to UTF for use with GFX fonts
char k[30];
utf8_rus(k, (const unsigned char*)s);
char* m = s;
// select standard font
dmd.selectFont(&UkrRusArial_F);
// set text foreground and background colors
dmd.setTextColor(col[0], bg);
// shift steps in pixels for running text (positive - shift right, negative - left)
int8_t step[] = { 1,-1,-2,2 };
// running text shift interval
uint16_t interval = 30;
long prev_step = millis();
uint8_t col_ptr = 0;
uint8_t i = 0, b = 0;
uint8_t test = 255;
uint8_t test_cnt = 4;
dmd.setBrightness(200);
// Cycle for tests:
// -- running texts moving at x and y axis with single and double speed
// -- vertical scrolling message
while (1) {
if ((millis() - prev_step) > interval) {
if (test >= test_cnt) {
test = 0;
// draw message
dmd.drawMarqueeX(m, -1 * (dmd.stringWidth(m)), 0);
dmd.swapBuffers(true);
}
switch (test) {
// moving text at x axis
case 0:
if (dmd.stepMarquee(step[i], 0) & 1) { // if text is reached screen bounds
dmd.clearScreen(true);
// set next text color
col_ptr++;
if (col_ptr >= col_cnt) col_ptr = 0;
dmd.setTextColor(col[col_ptr], bg);
// set new text speed
i++;
// if all moving finished
if (i > 3) {
// go to next stage
i = 0;
test++;
dmd.drawMarqueeX(m, 0, (dmd.height() > 16)? 8 : 0);
}
else {
if (step[i] < 0) dmd.drawMarqueeX(m, dmd.width() - 1, 0);
else dmd.drawMarqueeX(m, -1 * dmd.stringWidth(m), 0);
}
}
else {
if (step[i] != 1) dmd.drawFilledBox(0, 0, 5, dmd.height() - 1, GRAPHICS_INVERSE);
}
// output mem buffer to matrix
dmd.swapBuffers(true);
break;
case 1:
b++;
dmd.setBrightness(b);
if (b > 250) {
test++;
b = 80;
i = 0;
dmd.setBrightness(b);
dmd.drawMarqueeX(m, 0, 0);
}
dmd.swapBuffers(true);
break;
// moving text at y axis
case 2:
if (dmd.stepMarquee(0, step[i]) & 1) { // if text is reached screen bounds
// clear the screen
dmd.clearScreen(true);
// select new moving speed
i++;
// if all moving finished
if (i > 3) {
// go to next stage
test++;
// select GFX font for vertical scroll
dmd.selectFont(&GlametrixL);
dmd.drawMarquee(k, strlen(k), dmd.width() - 1,
(dmd.height() > 16)? 8 : 0, 1);
}
else {
if (step[i] < 0) dmd.drawMarqueeX(m, 0, dmd.height());
else dmd.drawMarqueeX(m, 0, 0);
}
}
// output mem buffer to matrix
dmd.swapBuffers(true);
break;
// vertical scrolling
case 3:
dmd.stepMarquee(-1, 0, 1);
dmd.swapBuffers(true);
break;
}
prev_step = millis();
}
}
}
Строчек 1-8 в примере не было. Впрочем, это вряд ли имеет значение.
Попробуйте заменить тип матрицы на RGB64x32_S8_OKSingra
. Хотя не думаю, что это поможет…
Да я менял. Тот же эффект -синий квадрат. Причем если загрузить другой пример, то тот же квадрат
Честно говоря, идей нет. Судя по моделям чипов, матрица совместима. Но почему не работает - не знаю.
Спасибо. Ещё покопаюсь, может что с контактами. Хотя несколько раз проверял
Подскажите, для платы stm32f401ccu6 пины подключения те же?
Зависит от режима цветности, есть особенности.
Подробнее на старом форуме тут, сообщение #459
https://arduino.ru/forum/proekty/dmdstm32-versiya-biblioteki-dmd-dlya-stm32duino?page=9#comment-665942
Вроде удалось исправить баг с функцией поворота setRotation(), о котором Вы писали в сообщении #213.
И еще несколько небольших исправлений.
Версия v1.0.5
Здравствуйте !
Уважаемый b707 а с матрицами на чипах 3256 и 5125 не сталкивались скан 1/10
Столкнулся с проблемой, мы тут вместе разгадывали матрицу quiangli 80*40 1/10
на чипах, sm5368 и DP3216 а теперь продавцы говорят таких больше не делают…
говорят теперь 3256 и 5125
Добрый день
Номера чипов мне ни о чем не говорят. Если у вас есть даташиты, выложите ссылки, пожалуйста.
Если панель у вас на руках - тогда все как обычно, сначала тесты, потом доработка кода.