Вопросы о конфигурации PIC SPI - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть несколько вопросов, связанных с регистрами SPIxCON SPI. Я использую PIC18F26K83. 1) Существует регистр SPIxTCNTH: SPI TRANSFER COUNTER MSB. И я могу установить первые 3 бита, которые подсчитывают передаваемые биты. И в соответствии с таблицей это доступно для записи. В соответствии с таблицей данных он считает биты, которые будут переданы, тогда почему он доступен для записи? Нужно ли мне писать в соответствии с битами, которые я отправлю? Или это для информирования пользователя.

2) Существует SPIxTWIDTH: SPI TRANSFER WIDTH REGISTER. В случае BMODE = 1 это Размер (в битах) каждой передачи, подсчитываемой счетчиком передачи Я буду отправлять значения, такие как 1.1 или 2.3, в ЦАП. В этом случае, что я должен установить это? Есть ли стандартное значение для этого регистра?

3) Я не смог понять, для чего нужны регистры FIFO, согласно данным, которые мы не можем контролировать с помощью программного обеспечения. Разве это не буфер? Поэтому, если я пишу, чтобы регистр передачи был быстрее скорости передачи, передаваемые данные будут помещены в FIFO. И один за другим они будут переданы. Я прав? Мне ничего не нужно, кроме записи в буфер передачи.

4) Я прочитал, но не смог понять биты полярности в SPIxCON1. Это нормально, если я не коснусь этих битов в регистре управления? Я не хочу портить.

5) Как выбрать рабов? В регистре SPIxCON2 есть SSET (бит включения выбора ведомого). Я могу сделать это 1, но тогда как я могу выбрать раба?

Спасибо за ваши ответы. Я новичок. Извините за простые и, возможно, бессмысленные вопросы. Или я могу просто показать свой конфигурационный код, но я считаю, что его будет сложнее проанализировать.

1 Ответ

1 голос
/ 19 апреля 2019

1) Счетчик передачи (при использовании) записывается с количеством байтов или частичных байтов для отправки или получения (в зависимости от режима). Поэтому вы должны установить его, если вы используете его (BMODE = 0 или TXR = 0) на количество байтов, которое вы ожидаете отправить или получить.

2) Вам нужно взглянуть на двоичное представление этих чисел, чтобы увидеть, сколько битов вы будете отправлять в каждом случае. Стандартное значение - полный байт.

3) FIFO являются скрытыми элементами, при записи в SPIxTXB или при чтении из регистров SPIxRXB осуществляется доступ к соответствующему FIFO. FIFO имеют глубину только два байта, поэтому вам все равно нужно проверить переполнение, если вы отправляете быстрый бит TXWE (iirc), но если у вас много данных для быстрой передачи, я бы порекомендовал использовать DMA для выполнения передачи, тогда вы ' Я просто настроил его, позволил ему уйти и мог делать другие вещи, пока он не закончится.

4) Я думаю, что биты полярности просто устанавливают уровень линии в режиме ожидания на высокий или низкий. Он должен быть одинаковым для всех (хозяев и рабов).

5) Если у вас есть только один подчиненный, вы можете привязать эту линию к линии включения подчиненных. Если у вас есть более одного подчиненного, вам нужно установить линию gpio для каждого и (для каждого) ИЛИ сигналов вместе и подключить выход ИЛИ к разрешению ведомого устройства (если он активен на низком уровне, как это обычно бывает) , Убедитесь, что одновременно активен только один подчиненный. Делать последовательную цепь рабов можно также. Я не работал с такой установкой.

...