Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Запублудился в трех соснах переменных. При обращении к памяти (чтение, запись) я передаю адрес (на картинке) получается нечетное число бит. А как мне передать адрес побайтно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:39 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
сам адрес он такой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:41 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Дополни старшие разряды нулями, до целого количества байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:42 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima TДополни старшие разряды нулями, до целого количества байт. тогда что получается uint32_t row_address = (block_address<<6) | page_address; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:48 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
jenya7Dima TДополни старшие разряды нулями, до целого количества байт. тогда что получается uint32_t row_address = (block_address<<6) | page_address; ? Не совсем понял в чем твоя проблема. Если проблема заполнить битовую структуру, т.е. адрес занимает несколько бит подряд, которые не выровнены по началу байта, то сдвигами. Так как ты написал. Затем OR с заполняемой структурой. Либо еще проще: Битовые поля если на Си пишешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:53 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7пропущено... тогда что получается uint32_t row_address = (block_address<<6) | page_address; ? Не совсем понял в чем твоя проблема. Если проблема заполнить битовую структуру, т.е. адрес занимает несколько бит подряд, которые не выровнены по началу байта, то сдвигами. Так как ты написал. Затем OR с заполняемой структурой. Либо еще проще: Битовые поля если на Си пишешь. мне этот адресс нужно передать тремя байтами (на первой картинке) то есть Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. так что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 08:58 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
jenya7так что ли? Понятия не имею, я не телепат. Что делает SPI_rw_flash() ? Какой тип у temp ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 09:04 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7так что ли? Понятия не имею, я не телепат. Что делает SPI_rw_flash() ? Какой тип у temp ? SPI_rw_flash() посылает байт. но это не важно. temp это байт. У нас дано Block Address (2048 blocks/device): 11 bits Page Address (64 pages/block): 6 bits Исходя из этого строим Row Address (на второй картинке) uint32_t row_address = (block_address<<6) | page_address; а теперь это адрес нужно передать тремя байтами первый - temp = 0; второй - temp = row_address >> 8; третий - temp = row_address & 0xFF; получается так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 09:12 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
jenya7Исходя из этого строим Row Address (на второй картинке) uint32_t row_address = (block_address<<6) | page_address; а теперь это адрес нужно передать тремя байтами первый - temp = 0; второй - temp = row_address >> 8; третий - temp = row_address & 0xFF; получается так ? нет, первый - temp = row_address >> 16; ну и предварительно 1 байт команды. в остальном вроде картинке соответствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 09:32 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7Исходя из этого строим Row Address (на второй картинке) uint32_t row_address = (block_address<<6) | page_address; а теперь это адрес нужно передать тремя байтами первый - temp = 0; второй - temp = row_address >> 8; третий - temp = row_address & 0xFF; получается так ? нет, первый - temp = row_address >> 16; ну и предварительно 1 байт команды. в остальном вроде картинке соответствует. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 09:36 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Че то фигня какя то выходит Допустим я я хочу стереть блок 2046 — 0x7FE uint32_t row_address = (2046<<6) | 0 = 0x1FF80 передаю побайтно первый - temp = row_address >> 16 = 1; второй - temp = row_address >> 8 = 0xFF; третий - temp = row_address & 0xFF = 0x80; где то я явно туплю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 12:48 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
jenya7Че то фигня какя то выходит Допустим я я хочу стереть блок 2046 — 0x7FE uint32_t row_address = (2046<<6) | 0 = 0x1FF80 передаю побайтно первый - temp = row_address >> 16 = 1; второй - temp = row_address >> 8 = 0xFF; третий - temp = row_address & 0xFF = 0x80; где то я явно туплю Все верно. Что тебя смущает? Как из 0x7FE получили 0x1FF80 ? Так Код: plaintext 1. просто добавили 6 нулей, но при этом разбивка на байты съехала и значения стали другие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 12:59 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
По-хорошему лучше так писать Код: plaintext 1. 2. 3. Если temp имеет тип байт, то ничего не поменялось, но код стал читабельнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:02 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7Че то фигня какя то выходит Допустим я я хочу стереть блок 2046 — 0x7FE uint32_t row_address = (2046<<6) | 0 = 0x1FF80 передаю побайтно первый - temp = row_address >> 16 = 1; второй - temp = row_address >> 8 = 0xFF; третий - temp = row_address & 0xFF = 0x80; где то я явно туплю Все верно. Что тебя смущает? Как из 0x7FE получили 0x1FF80 ? Так Код: plaintext 1. просто добавили 6 нулей, но при этом разбивка на байты съехала и значения стали другие. да но когда мы возвращаем обратно - я же должен послать 07 FE а что же я посылаю - 1 FF 80. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:20 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
jenya7да но когда мы возвращаем обратно - я же должен послать 07 FE а что же я посылаю - 1 FF 80. При чем тут обратно? Ты правда думаешь что я телепат? У тебя так адрес построен Код: sql 1. если тебе надо обратно получить block_address, то делай так Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:23 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
И до кучи Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:27 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7да но когда мы возвращаем обратно - я же должен послать 07 FE а что же я посылаю - 1 FF 80. При чем тут обратно? Ты правда думаешь что я телепат? У тебя так адрес построен Код: sql 1. если тебе надо обратно получить block_address, то делай так Код: sql 1. по моему я понял...спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:36 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
И если побайтно принимаешь, то 1 FF 80 склеивается так Код: plaintext 1. 2. 3. 4. 5. где recv_byte() чтение следующего байта из потока. PS Если опять не про то ответил, то пиши подробнее что не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:36 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima TИ если побайтно принимаешь, то 1 FF 80 склеивается так Код: plaintext 1. 2. 3. 4. 5. где recv_byte() чтение следующего байта из потока. PS Если опять не про то ответил, то пиши подробнее что не получается. просто я не очень понимаю - после команды BLOCK ERASE - я должен передать именно адрес блока который я хочу стереть или весь адресс блок+страница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:39 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
BLOCK ERASE - D8 - на картинке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:40 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
jenya7просто я не очень понимаю - после команды BLOCK ERASE - я должен передать именно адрес блока который я хочу стереть или весь адрес блок+страница. я так понимаю что "адрес блок+страница", т.к. на картинке 17 бит под это отведено, а адрес блока 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:43 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
И на второй картинке написано что BLOCK ERASE принимает только row_address, который состоит из block_address и page_address. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 13:46 |
|
||
|
Передача адреса
|
|||
|---|---|---|---|
|
#18+
Dima TИ на второй картинке написано что BLOCK ERASE принимает только row_address, который состоит из block_address и page_address. я понял. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2018, 14:17 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39662270&tid=1340098]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 406ms |

| 0 / 0 |
