SPI ба Arduino интерфэйс

Агуулгын хүснэгт:

SPI ба Arduino интерфэйс
SPI ба Arduino интерфэйс

Видео: SPI ба Arduino интерфэйс

Видео: SPI ба Arduino интерфэйс
Видео: Видеоуроки по Arduino. Интерфейсы SPI (8-я серия, ч1) 2024, Арваннэгдүгээр
Anonim

Бид SPI интерфэйсийг судалж, Arduino руу шилжих бүртгэлийг холбож, LED протоколыг хянахын тулд энэхүү протоколыг ашиглан хандах болно.

SPI интерфэйс
SPI интерфэйс

Шаардлагатай

  • - Ардуино;
  • - ээлжийн бүртгэл 74HC595;
  • - 8 LED;
  • - 220 Ом-ийн 8 резистор.

Зааварчилгаа

1-р алхам

SPI - Цуваа захын интерфэйс эсвэл "Цуваа захын интерфэйс" нь мастер төхөөрөмжийг захын төхөөрөмжүүд (боол) -той холбоход зориулсан өгөгдөл дамжуулах синхрон протокол юм. Мастер нь ихэвчлэн микроконтроллер байдаг. Төхөөрөмжүүдийн хоорондох харилцаа холбоо нь дөрвөн утсаар хийгддэг тул SPI-ийг заримдаа "дөрвөн утастай интерфэйс" гэж нэрлэдэг. Эдгээр дугуй нь:

MOSI (Master Out Slave In) - мастераас боол төхөөрөмжүүд рүү өгөгдөл дамжуулах шугам;

MISO (Master In Slave Out) - боолоос мастер руу дамжуулах шугам;

SCLK (Serial Clock) - мастерийн үүсгэсэн синхрончлолын цаг импульс;

SS (Slave Select) - боолын төхөөрөмжийг сонгох шугам; "0" мөрөнд боол нь хандаж байгааг "ойлгодог".

Цаг импульсийн туйлшрал (бид HIGH буюу LOW түвшинд ажилладаг), Цагны туйлшрал, CPOL, цаг импульсийн фаз (синхрончлолын) хослолын улмаас өгөгдөл дамжуулах дөрвөн горим байдаг (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3). цагны импульсийн өсөлт ба бууралтын ирмэг дээр), Clock Phase, CPHA.

Зураг дээр SPI протоколыг ашиглан төхөөрөмжүүдийг холбох хоёр сонголтыг харуулав: бие даасан ба каскад. ТХГН-ийн автобусанд бие даан холбогдсон үед мастер боол бүртэй тус тусдаа харилцдаг. Каскадтай үед боолын төхөөрөмжүүд ээлжлэн, каскад хэлбэрээр өдөөгддөг.

SPI холболтын төрлүүд
SPI холболтын төрлүүд

Алхам 2

Ардуино хотод SPI автобусууд тодорхой боомтууд дээр байрладаг. Самбар бүр өөрийн гэсэн зүү даалгавартай байдаг. Тохиромжтой болгохын тулд тээглүүрүүдийг хуулбарлаж, тусдаа ICSP (In Circuit Serial Programming) холбогч дээр байрлуулна. ICSP холбогч дээр SS тохируулагч зүү байхгүй байгааг анхаарна уу Arduino-г сүлжээнд мастер болгон ашиглах болно гэж таамаглаж байна. Гэхдээ шаардлагатай бол та Arduino-ийн аль ч дижитал зүүг SS болгож өгч болно.

Arduino UNO ба Nano-ийн SPI автобусуудад тээглүүрийн стандарт хуваарилалтыг зураг дээр харуулав.

Ардуино дахь ТХГН-ийн хэрэгжилт
Ардуино дахь ТХГН-ийн хэрэгжилт

Алхам 3

Ардуинод зориулж SPI протоколыг хэрэгжүүлдэг тусгай номын санг бичсэн болно. Энэ нь дараах байдлаар холбогдсон байна: програмын эхэнд #include SPI.h нэмнэ үү

SPI протоколтой ажиллаж эхлэхийн тулд тохиргоогоо тохируулаад SPI.beginTransaction () процедурыг ашиглан протокол эхлүүлэх хэрэгтэй. Та үүнийг нэг зааврын дагуу хийж болно: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

Энэ нь бид SPI протоколыг 14 МГц давтамжтайгаар эхлүүлж, MSB (хамгийн чухал бит) -ээс өгөгдөл дамжуулах явцыг "0" горимд явуулна гэсэн үг юм.

Эхлүүлсний дараа бид харгалзах SS зүүг LOW төлөвт оруулаад боолын төхөөрөмжийг сонгоно.

Дараа нь бид өгөгдлийг SPI.transfer () тушаалаар боол төхөөрөмж рүү дамжуулдаг.

Шилжүүлсний дараа бид SS-г өндөр төлөвт буцааж өгдөг.

Протоколтой ажиллах нь SPI.endTransaction () тушаалаар дуусна. SPI.beginTransaction () ба SPI.endTransaction () заавруудын хооронд шилжүүлгийн гүйцэтгэлийн хугацааг багасгах нь зүйтэй бөгөөд ингэснээр өөр төхөөрөмж өөр өөр тохиргоог ашиглан өгөгдөл дамжуулах ажлыг эхлүүлэхийг оролдвол давхцал гарахгүй.

SPI дамжуулалт
SPI дамжуулалт

Алхам 4

SPI интерфейсийн практик хэрэглээг авч үзье. Бид SPI автобусаар дамжуулан 8 битийн ээлжийн бүртгэлийг хянах замаар LED-г асаах болно. 74HC595 ээлжийн бүртгэлийг Arduino руу холбож үзье. Бид 8 гаралт тус бүрийг LED (хязгаарлах эсэргүүцэлээр) дамжуулан холбодог. Диаграмыг зураг дээр харуулав.

74HC595 ээлжийн бүртгэлийг Arduino руу холбож байна
74HC595 ээлжийн бүртгэлийг Arduino руу холбож байна

Алхам 5

Ийм ноорог бичье.

Нэгдүгээрт, SPI санг холбож, SPI интерфейсийг эхлүүлье. 8-р зүүг боол сонгох зүү гэж тодорхойлъё. "0" утгыг илгээж ээлжийн бүртгэлийг арилгацгаая. Бид цуваа портыг эхлүүлнэ.

Шилжүүлэлтийн бүртгэлийг ашиглан тодорхой LED-г асаахын тулд түүний оролтод 8 битийн тоог оруулах шаардлагатай. Жишээлбэл, эхний LED гэрэл асахын тулд бид хоёртын дугаарыг 00000001, хоёр дахь дугаарыг 00000010, гурав дахь дугаарыг 00000100 гэх мэтээр тэжээдэг. Аравтын тооллын эдгээр хоёртын тоонууд нь дараах дарааллыг бүрдүүлж байна: 1, 2, 4, 8, 16, 32, 64, 128 ба 0-ээс 7 хүртэлх хоёрын хүч юм.

Үүний дагуу LED-ийн тоогоор () гогцоонд бид 0-ээс 7-ыг дахин тооцоолно. Pow (суурь, зэрэг) функц нь мөчлөгийн тоолуурын хүчийг 2 хүртэл нэмэгдүүлдэг. Микроконтроллерууд нь "давхар" төрлийн тоонуудтай маш зөв ажилладаггүй тул үр дүнг бүхэл тоонд хөрвүүлэхийн тулд бид дугуй () функцийг ашигладаг. Үр дүнгийн дугаарыг ээлжийн бүртгэлд шилжүүлдэг. Тодорхой болгохын тулд цуваа порт монитор нь энэ үйл ажиллагааны явцад олж авсан утгыг харуулна: нэг нь цифрээр дамждаг - LED нь долгионоор асдаг.

SPI автобусаар дамжуулан ээлжийн бүртгэлийг хянах ноорог
SPI автобусаар дамжуулан ээлжийн бүртгэлийг хянах ноорог

Алхам 6

LED-үүд ээлжлэн асч, бид гэрлийн аялалын "долгион" -ыг ажиглаж байна. LED-үүдийг бид SPI интерфэйсээр холбогдсон шилжүүлэх бүртгэл ашиглан удирддаг. Үүний үр дүнд 8 LED жолоодоход зөвхөн 3 Arduino тээглүүр ашигладаг.

Arduino нь SPI автобусаар хэрхэн ажилладаг тухай хамгийн энгийн жишээг бид судалж үзсэн. Бид ээлжийн регистрүүдийн холболтыг тусдаа өгүүллээр илүү нарийвчлан авч үзэх болно.

Зөвлөмж болгож буй: