-
- Это твое личное представление разработчика, который проектировал
SPI в FPGA. Было ведь такое, а? ;-) А по факту - нет, в самом общем случае CS это всего лишь сигнал квитирования, который определяет
начало (и конец) транзакции. - reZident(13.06.2023 11:16)
- Ну? А что делает конец транзакции? Прально, фиксирует состояние
сдвигового регистра. Кстате, то АЦП, что вы проедложили в качестве
примера, не совсем катит, т.к. оно работает не по командам проца, а
формирует запрос по DRDY. И то, если оно одно в системе, бо если
кого-то в цепи надо прописать, то АЦП можэт потечь крышей. Когда
устройств много, извольте дёргать CS. И такое устройство нельзя
цеплять в цепь каскадом. В общем, пропиретарщина. Для контраста
можэте глянуть mse homjak(35 знак., 13.06.2023 12:00)
- Чё вы в сдвиговый регистр уперлись? В SerialFalsh и/или EEPROM
буферное ОЗУ это по-вашему тоже сдвиговый регистр чоли? Оно ведь
заполняется по кольцу (кольцевому счетчику адресов) во время
транзакции записи. Нехилый в SF (где буфер 256 байт) 2048-разрядный
регистр забубенили! А потом ведь из этого "регистра" идет запись во
Flash, которая по всему выходит тоже 2048 разрядов имеет? Или как? - reZident(13.06.2023 12:20)
- Если оно задвигается по последовательному каналу, то да, сдвиговый
регистр. Какая разница, скока там разрядов, если вы двигаете его по
одному битику? ЖЫТАГ вообще можэт десятки килобайт жопка к жопке
сдвигать. mse homjak(697 знак., 13.06.2023 12:58)
- Та я ведь и непротив, если вы согласитесь, что CS это сигнал
квитирования (флаг, семафор, назовите его как хотите), а не еще
один тактовый сигнал. - reZident(13.06.2023 13:07)
- Ну да, пусть семафор. Тока по этому семафору сдвиговый регистр
должэн переписаться в регистр рабочий. По банальной причине: когда
у вас начнёца следующая транзакцыя, эти данные будут испорчены и
устройство перейдёт в режим суетолога. До тех пор, пока данные
снова не устаканяца. - mse homjak(13.06.2023 13:25)
- Да нету прямой связи между фронтом CS и (пере)записью каких-либо
унутренних регистров! Внутренняя логика устройства может работать
совсем от другого тактового сигнала и начать обрабатывать
(пере-записывать принятые или подкидывать в последовательный канал
выходные данные) еще до завершения транзакции. CS это лишь признак
начала/окончания транзакции и усё! Он управляет логикой интерфейса
связи, а не логикой работы самого устройства. - reZident(13.06.2023 13:46)
- Да, можэт. От тот техасский АЦП из этой серии. Воткнуть его в
цэпочку устройств, нельзя. Для работы его нужно выделить в
отдельный загончик. По входу он должэн ловить только то, что нужно
только ему. Т.е. это голимая пропиретарщина. Я вам это ужэ пол-дня
объясняю. Причом нет никакой причины, чтобы нельзя было сделать по
уму. Обычное рукожопие. - mse homjak(13.06.2023 14:04)
- А я вам объясняю, что нету прямой связи между CS и внутренней
логикой работы устройства. Взять тот же STM32. У него сдвиговый
регистр максимум 16-разрядный, а передавать через SPI можно ажно
килобайты без "отмашки" каждых 2 байт CS-ом, не так ли? Потому, что
унутренний конвейер позволяет подтаскивать данные в сдвиговый
регистр SPI и производить перезапись в/из него согласно своей
унутренней логике работы модуля SPI. Фронт CS, то бишь NSS лишь
запрещает тактировать reZident(133 знак., 13.06.2023 14:33)
- Можно. Но в регистрах управления есть биты, отвечающие за это. Т.е.
можно (было бы) отмахивать CS каждое слово, а можно не обмахивать.
Можно было бы пользовать устройства типа ЕЕПРОМ, с последовательной
многобайтной записью и можно было бы пользовать устройства с
фиксированной длиной слова. Причом, используя ДМА. А так, налицо
какая-то херня, когда имеем, вроде бы, полный набор для скоростной
работы с узлом без участия процэссора, но вынуждены сидеть в цыкле
и mse homjak(24 знак., 13.06.2023 14:48)
- Хужэ того, чтобы привести работу CS в нормальное состояние, достаточно просто вывести на него сигнал ~BUSY. Фсио. Ну, разве что, подмешать к нему TXempty, если BUSY формируется через жопу(скорее всего). Делов-то. А имеем откровенное рукожопство, замешанное на похуизме. Пипл хавает. - mse homjak(13.06.2023 17:44)
- Можно. Но в регистрах управления есть биты, отвечающие за это. Т.е.
можно (было бы) отмахивать CS каждое слово, а можно не обмахивать.
Можно было бы пользовать устройства типа ЕЕПРОМ, с последовательной
многобайтной записью и можно было бы пользовать устройства с
фиксированной длиной слова. Причом, используя ДМА. А так, налицо
какая-то херня, когда имеем, вроде бы, полный набор для скоростной
работы с узлом без участия процэссора, но вынуждены сидеть в цыкле
и mse homjak(24 знак., 13.06.2023 14:48)
- А я вам объясняю, что нету прямой связи между CS и внутренней
логикой работы устройства. Взять тот же STM32. У него сдвиговый
регистр максимум 16-разрядный, а передавать через SPI можно ажно
килобайты без "отмашки" каждых 2 байт CS-ом, не так ли? Потому, что
унутренний конвейер позволяет подтаскивать данные в сдвиговый
регистр SPI и производить перезапись в/из него согласно своей
унутренней логике работы модуля SPI. Фронт CS, то бишь NSS лишь
запрещает тактировать reZident(133 знак., 13.06.2023 14:33)
- Да, можэт. От тот техасский АЦП из этой серии. Воткнуть его в
цэпочку устройств, нельзя. Для работы его нужно выделить в
отдельный загончик. По входу он должэн ловить только то, что нужно
только ему. Т.е. это голимая пропиретарщина. Я вам это ужэ пол-дня
объясняю. Причом нет никакой причины, чтобы нельзя было сделать по
уму. Обычное рукожопие. - mse homjak(13.06.2023 14:04)
- Да нету прямой связи между фронтом CS и (пере)записью каких-либо
унутренних регистров! Внутренняя логика устройства может работать
совсем от другого тактового сигнала и начать обрабатывать
(пере-записывать принятые или подкидывать в последовательный канал
выходные данные) еще до завершения транзакции. CS это лишь признак
начала/окончания транзакции и усё! Он управляет логикой интерфейса
связи, а не логикой работы самого устройства. - reZident(13.06.2023 13:46)
- Ну да, пусть семафор. Тока по этому семафору сдвиговый регистр
должэн переписаться в регистр рабочий. По банальной причине: когда
у вас начнёца следующая транзакцыя, эти данные будут испорчены и
устройство перейдёт в режим суетолога. До тех пор, пока данные
снова не устаканяца. - mse homjak(13.06.2023 13:25)
- Та я ведь и непротив, если вы согласитесь, что CS это сигнал
квитирования (флаг, семафор, назовите его как хотите), а не еще
один тактовый сигнал. - reZident(13.06.2023 13:07)
- Если оно задвигается по последовательному каналу, то да, сдвиговый
регистр. Какая разница, скока там разрядов, если вы двигаете его по
одному битику? ЖЫТАГ вообще можэт десятки килобайт жопка к жопке
сдвигать. mse homjak(697 знак., 13.06.2023 12:58)
- Чё вы в сдвиговый регистр уперлись? В SerialFalsh и/или EEPROM
буферное ОЗУ это по-вашему тоже сдвиговый регистр чоли? Оно ведь
заполняется по кольцу (кольцевому счетчику адресов) во время
транзакции записи. Нехилый в SF (где буфер 256 байт) 2048-разрядный
регистр забубенили! А потом ведь из этого "регистра" идет запись во
Flash, которая по всему выходит тоже 2048 разрядов имеет? Или как? - reZident(13.06.2023 12:20)
- Ну? А что делает конец транзакции? Прально, фиксирует состояние
сдвигового регистра. Кстате, то АЦП, что вы проедложили в качестве
примера, не совсем катит, т.к. оно работает не по командам проца, а
формирует запрос по DRDY. И то, если оно одно в системе, бо если
кого-то в цепи надо прописать, то АЦП можэт потечь крышей. Когда
устройств много, извольте дёргать CS. И такое устройство нельзя
цеплять в цепь каскадом. В общем, пропиретарщина. Для контраста
можэте глянуть mse homjak(35 знак., 13.06.2023 12:00)
- Это твое личное представление разработчика, который проектировал
SPI в FPGA. Было ведь такое, а? ;-) А по факту - нет, в самом общем случае CS это всего лишь сигнал квитирования, который определяет
начало (и конец) транзакции. - reZident(13.06.2023 11:16)