Перейти к содержанию
    

Экспериментирую с GPIO и обнаружил, что GPIOB_ODR инициализируется вовсе не 0x0000, как написано в даташите, а значением 16. Откуда оно, ума не приложу.

Как откуда? А про JTAG забыли? На STM пины житага отнюдь не выделенные, а висят прямо на портах GPIO.

В данном случае - это подтяжка (пуллап) линии JTRST.

 

Можно отключить житаг через ремап, тогда этими пинами можно будет пользоваться в своё усмотрение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Позвольте вопрос по Z состоянию пина без подтяжек. У AVR с этим бардак. А про STM32F103x написано:

Ilkg Input leakage current (5) VSS ≤VIN ≤VDD Standard I/Os ±1 μA

5. Leakage could be higher than max. if negative current is injected on adjacent pins.

( Из STM32F103x6 STM32F103x8 STM32F103xB Performance line Preliminary Data)

Имеется ли информация по реальным утечкам в плюс и минус питания, или может он тоже генерит изнутри наружу?

В одном проекте контроллер с чистым Z попиново очень помог бы.

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В одном проекте контроллер с чистым Z попиново очень помог бы.

Спасибо.

А как понять "с чистым Z"?

Совсем без тока утечки, или с постоянным током?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как обычно- симметрично половины питания, другими словами утечка из пина в минус идентична утечке из плюса в пин, чтоб вольтметр подключенный к фиксированной половине питания и пину в Z состоянии показал 0 вольт. Т.е. честное ВЫСОКОИМПЕДАНСНОЕ.

Вроде про LPC1111 так как надо. но перед железномягкими телодвижениями в сторону новой платформы хотелось услышать мнение специалиста.

post-41659-1272033806_thumb.jpg

Изменено пользователем zltigo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..хотелось услышать мнение специалиста.

Рассчитывая на определенность в поведении токов утечек Вы твердо стоите на пути изобретния дерьма. Вне зависимости от платформы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо.

Другие мнения есть?

Кто проверял STM32F103x по Z состоянию, будте добры, отпишитесь.

Изменено пользователем Karim

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлаживаю проект "в железе" на STM32F103VИ (100пин корпус)

 

После первого включения проконтролировал общий ток, получил 110ма и успокоился, т.к есть еще 6 датчиков и они что-то жрут, а старая конструкция на 2-х мегах жрала на 15ма больше...

 

Отладка длится не первый день, я решил померять ток потребляемый при вычислениях с ацп - возрастает или нет.

нифига не намерял, но задумался что-то проц слегка теплый (градусов 40)- может что-то не так?

 

И сейчас дошло - ОН ВСЕ ВРЕМЯ РАБОТАЛ НА 144 МГц!! (кварц на отладочной плате был 8 Мгц, в живом железе на 16 Мгц, а множитель в PLL я переставить забыл. :07: )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

привет всем! тоже занялся проблемой SDIO на STM32F103VE.

1) Mass Storage работает хорошо, но только с картами емкостью до 8 Гб включительно. при 16 Гб карте получаю "Устройство УСБ не опознано" Может кто пробовал с 16Гб ? :rolleyes:

2) FatFs тоже работает - но тут прикол еще хлеще - пожоду переполнение адресации при выполнении Disk_read. Выражается следующим образом: карта на 8Гб почти полностью заполнена, записывю на нее еще один файлик с ПК. Вставляю карту в проект, в проекте тупо поблочное копирование этого файлика в другой. Прогнал. карту снова в пк. В скопированном файлике содержимое другого файла!

 

В обоих проектах использую stm32_eval_sdio_sd.c из стандартного набора библиотек

Изменено пользователем Ivan Kuznetzov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

привет всем! тоже занялся проблемой SDIO на STM32F103VE.

1) Mass Storage работает хорошо, но только с картами емкостью до 8 Гб включительно. при 16 Гб карте получаю "Устройство УСБ не опознано" Может кто пробовал с 16Гб ? :rolleyes:

SD карточки до 4Гб используют один протокол, свыше 4Гб - другой.

Возможно, с этим как-то связано. Почему у Вас граница на 8ми - не знаю.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все еще мучаю STM32F103. Пока чип работает хорошо.

Кстати у него очень удобная реализация CAN - 2 fifo (что мне удобнее чем куча mailbox) и много довольно гибких фильтров.

И еще тут обнаружил что APB1 (на ней и CAN висит ) работает (по даташиту) максимум на 36 Mhz, т.к. я на это внимания не обратил у меня APB1 и CAN на ней работают на полной скорости 72 Mhz ( глюков не было), но скорость я конечно все равно понижу до 36.

Добрый день. Подскажите, пожалуйста, кто разобрался, как поменять пины, на которые выводится кан интерфейс? Мне нужно сделать это по ходу программы. То есть я подключил два Кан трансивера: на пины а11а12 и на в8в9. Стартую без ремапа, работаю с А. Затем делаю ремап и работаю с Б. А дальше сделать ремап с Б на А не выходит. Это вообще возможно?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

конечно возможно

В таком случае прошу помощи в поиске ошибок. Вероятно, в библиотеке. Прошу прощения, что код из среды ардуино.

#include <HardwareCAN.h>
//#include "changes.h"
/*
*
*/

#define T_DELAY 10
// Instanciation of CAN interface
HardwareCAN canBus(CAN1_BASE);
CanMsg msg;

void CAN_a_33_Setup(void)
{
 CAN_STATUS Stat;
 canBus.map(CAN_GPIO_PA11_PA12);  
 Stat = canBus.begin(CAN_SPEED_33, CAN_MODE_NORMAL);
 canBus.filter(0, 0, 0);
 canBus.set_irq_mode();
 Stat = canBus.status();
 if (Stat != CAN_OK)
 {digitalWrite(PC13, LOW);
  delay(10000);}
// /* Your own error processing here */ ;  // Initialization failed
//  delay(T_DELAY);
}

void CAN_b_95_Setup(void)
{
 canBus.map(CAN_GPIO_PB8_PB9);
 Stat = canBus.begin(CAN_SPEED_95, CAN_MODE_NORMAL);
 canBus.filter(0, 0, 0);
 canBus.set_irq_mode();
 Stat = canBus.status();
 if (Stat != CAN_OK)
 {digitalWrite(PC13, LOW);
  delay(10000);}
//	 /* Your own error processing here */;   // Initialization failed
//  delay(T_DELAY);
}


CAN_TX_MBX CANsend(CanMsg *pmsg) 
{
 CAN_TX_MBX mbx;

 do 
 {
mbx = canBus.send(pmsg);
#ifdef USE_MULTITASK
vTaskDelay( 1 );				 // Infinite loops are not multitasking-friendly
#endif
 }
 while(mbx == CAN_TX_NO_MBX);	   // Waiting outbound frames will eventually be sent, unless there is a CAN bus failure.
 return mbx;
}

// Send message
// Prepare and send a frame containing some value 
void SendCANmessage(long id=0x001, byte dlength=8, byte d0=0x00, byte d1=0x00, byte d2=0x00, byte d3=0x00, byte d4=0x00, byte d5=0x00, byte d6=0x00, byte d7=0x00)
{
 // Initialize the message structure
 // A CAN structure includes the following fields:
 msg.IDE = CAN_ID_STD;		  // Indicates a standard identifier; CAN_ID_EXT would mean this frame uses an extended identifier
 msg.RTR = CAN_RTR_DATA;		// Indicated this is a data frame, as opposed to a remote frame (would then be CAN_RTR_REMOTE)
 msg.ID = id;				  // Identifier of the frame : 0-2047 (0-0x3ff) for standard idenfiers; 0-0x1fffffff for extended identifiers
 msg.DLC = dlength;				   // Number of data bytes to follow

 // Prepare frame : send something
 msg.Data[0] = d0;
 msg.Data[1] = d1;
 msg.Data[2] = d2;
 msg.Data[3] = d3;
 msg.Data[4] = d4;
 msg.Data[5] = d5;
 msg.Data[6] = d6;
 msg.Data[7] = d7;

 digitalWrite(PC13, LOW);	// turn the onboard LED on
 CANsend(&msg);	  // Send this frame			
 digitalWrite(PC13, HIGH);   // turn the LED off 
 delay(T_DELAY);  
}


// The application program starts here
byte msgD0 = 0x00;
void setup() {		// Initialize the CAN module and prepare the message structures.
 pinMode(PC13, OUTPUT);
 digitalWrite(PC13, HIGH);
 delay(10);
 digitalWrite(PC13, LOW);
 delay(1000);
 digitalWrite(PC13, HIGH);
 delay(1000);

}

void loop() {
 CAN_a_33_Setup();
 delay(T_DELAY);
 SendCANmessage(0x100,1,msgD0);	   
 delay(T_DELAY);
 CAN_b_95_Setup();
 delay(T_DELAY);
 SendCANmessage(0x111,1,msgD0);	   
 delay(T_DELAY);
 msgD0++;
}

Ссылка на библилтеку (5 значимых файлов):

 

 

https://github.com/megadrifter/Arduino_STM3...HardwareCAN/src

И файл https://github.com/megadrifter/Arduino_STM3...e/series/gpio.h

Изменено пользователем IgorKossak
[codebox] для длинного кода. [code]-для короткого!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...