|
|
  |
STM32F103x, делимся впечатлениями |
|
|
|
May 29 2009, 19:17
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Чёрт, возникли проблемы с флагом Busy SPI контроллера в режиме мастера. Вроде считал, что, пока контроллер занят, этот флаг будет всегда установлен. А когда передача/приём закончена - сброшен. По ходу, это не так. Вот что озвучено в мануале: BUSY flag This flag indicates the state of the SPI communication layer. When it is set, it indicates that the SPI is busy communicating and/or there is a valid data byte in the Tx buffer waiting to be transmitted. The purpose of this flag is to indicate if there is any communication ongoing on the SPI bus or not. This flag is set as soon as: 1. Data is written in the SPI_DR register in master mode 2. The SCK clock is present in slave mode The BUSY flag is reset each time a byte is transmitted/received. This flag is set and cleared by hardware. It can be monitored to avoid write collision errors. Writing to this flag has no effect. The BUSY flag is meaningful only when the SPE bit is set.
Я привык, опрашивая этот флаг, определять конец передачи данных. Но, на днях, снизив частоту SPI до пары сотен килогерц, обнаружил, что идёт потеря данных. Оказывается, это бит сбрасывается после передачи каждого байта! То есть, имея в буфере передатчика байт данных n+1, по окончании передачи из сдвигового регистра байта n, флаг busy на короткое время сбросится в ноль? Млин, спрашивается, какого ляду? Толку тогда от него? Эх...
|
|
|
|
|
May 29 2009, 21:00
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(klen @ May 29 2009, 23:23)  результат в студию или лучше в svn репозиторий OpenOCD да?? планета должна звать своих героев. Да я просто раскурочил OpenOcd и прямо заменил функции swjdp ( JTAG access piont) что они напрямую лезут исключительно через мою железку ( и уже по SWD),частично игнорируя иерархию интерфейсов OpenOCD. Так что в SVN это точно не положить. К тому же я пользуюсь IAR, а в IAR, как я уже писал, протокол GDB server трактует не правильно, поэтому и с некоторыми версиями OpenOcd не работает. В итоге я написал свой Gdb Server, но для полноценной отладки Cortex в IAR все равно не годится( системные регистры не показывает) нужен RDI. Дописывать OpenOCD я точно не буду, мне не нравится их стиль кода - по идеологии С++, но написано на С, разломать и втиснуть свое я еще могу, но что бы самомуписать... К тому же там еще надо с автомейком разбираться... А вот если кто соберется RDI делать, готов поучаствовать.
|
|
|
|
|
May 31 2009, 07:02
|

Местный
  
Группа: Свой
Сообщений: 290
Регистрация: 27-06-05
Из: Киев
Пользователь №: 6 345

|
Цитата(klen @ May 28 2009, 12:27)  сериальный отладочный интерфейсс SWJ-DP
ктонить пробывал это для отладки. всего два провода - выглядит удобно. что нада для того чтоб ЭТО работо? Под CW замечательно работает, работаю через JetLink. Скорость ниже, чем по JTAG, но особых неудобств не замечал.
--------------------
Если в сердце дверь закрыта - надо в печень постучать..
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|