Сообщение от sat_art
|
(а причина одна - CCR перезаписался из прелоада быстрее чем прелоад по ДМА)
|
Так да, по-любому CCR перепишется из прелоада быстрее, чем ДМА обновит прелоад - у ДМА больше телодвижений: ведь нужно получить запрос, пройти арбитраж, считать значение из источника и записать его в регистр, а это такты, такты, такты.. И в случае CCR › 0 момент инициации DMA request по
compare event приближается к наступающему
update event, и этих тактов может не хватить. Если CCR = 0, то в данном случае события
compare event и
update event можно считать эквивалентными для инициации DMA request.
Сообщение от sat_art
|
А какая разница высокая или малая частота если источник тактирования для всех один?
|
Ну там я не очень ясно выразился.
Имелось ввиду соблюдение довольно жестких таймингов для WS28xx при разных тактовых частотах МК (для простоты было принято AHB=APB1=APB2) : 8, 10, 12, 16, 24MHz.
Вот небольшая с
водка для
F103 и
F030 при работе на 8MHz,
код и данные в RAM, TIM_ARR=8, TIM_PSCR=1, CCR=3 и 6 для T0H и T1H:
На частоте 12 MHz при любых значениях DMA request (
burst feature тут никак не влиял) :
На
F103 уже не было засветки лишних пикселов, только искажения цветов.
На
F030 полный порядок
На 16 MHz уже все нормально и для
F103.