aka-cobra
Apr 18 2012, 07:18
Всем привет!
Есть LPC1313. На его порт (CLK) приходят импульсы с частотой 3.2МГц. По переднему фронту импульса нужно считывать данные с другого порта. Разогнал LPC на 72МГц и не успеваю даже ловить фронт...
Код
ldr r0,=0x50023ffc; адрес порта CLK
Prg01_00
ldr r1,[r0]
and r1,r1,#0x00000001
cbnz r1,Prg01_01
b Prg01_00
Prg01_01
; CLK = 1 - сохраняем данные и повторяем процесс
...
...
...
b Prg01_00
Подскажите пожалуйста, что я делаю не так...
Заранее благодарен!
Перенесите процедуру в ОЗУ и приведите код полностью.
Также - сделайте вывод в порт чередующихся 0 и 1 с максимальной частотой
MOVS R1,#0
MVNS R2,R1
STR R1, [R0]
STR R2, [R0]
STR R1, [R0]
STR R2, [R0]
...
и измерьте получившуюся частоту работы GPIO.
aka-cobra
Apr 18 2012, 12:54
а как перенести процедуру в ОЗУ? (keil)
Mahagam
Apr 18 2012, 14:04
самое "не так" это то, что работу по такому скоростному ногодрыгу вы возложили на контроллер, а не на программируемую логику.
aka-cobra
Apr 18 2012, 14:28
Разве это скоростной ногодрыг? Потом мне надо не ногами дрыгать, а получать информацию с частотой 3МГц. Конечно, можно поставить плиску и преобразовывать последовательные данные в параллельные и дальше передавать их на контроллер, но это еще один корпус и лишние связи...Я на 51 контроллере все это успевал на частоте 48МГц...
Цитата(aka-cobra @ Apr 18 2012, 18:28)

преобразовывать последовательные данные в параллельные и дальше передавать их на контроллер
Разве SPI для этого не подходит?
aka-cobra
Apr 18 2012, 14:51
Может и подойдет, надо попробовать. А какая максимальная частота CLK SPI?
Если это у вас стандартный SPI, то следует вообще забыть о GPIO.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.