lpc1788 ssp (SPI) - комуникация от proc към proc

Бих искал да изпратя низ от знаци от един процес (главен) към друг (подчинен) и след това да прочета низ от подчинен.

В момента смесвам arduino и LPC1788, използвайки lpc като главен и arduino като подчинен. LPC изпрати правилно низа, който се получава от arduino в ISR. Във функцията за цикъл проверявам дали всички знаци са получени и след това се опитвам да изпратя низ обратно. От страна на LPC ISR не работи по някаква причина. Зададох SR като

SR = (1<<TNF) | (1<<RNE);

Така че поставих забавяне след изпращане на низа от LPC и след това започнах четене от arduino.

Това, което виждам в LA за изпращане на низа, е:

въведете описание на изображението тук

но четенето на низ от Arduino изглежда странно (низът трябва да е "Pong\n", не винаги получавам P... варира) въведете описание на изображението тук

Предполагам, че по-голямата част от проблема е в синхронизирането на изпращане и четене на SPI буфер. Как да постигна това без функционален ISR на LPC?


person Gossamer    schedule 24.08.2013    source източник


Отговори (1)


Спецификацията на SPI гласи, че линията CS (SSEL) трябва да бъде активна по време на рамка и да става неактивна между тях. NXP интерпретира това като дума, която е един кадър. Това означава, че CS, генериран от SSP блока (същото важи и за наследения SPI), е активен само по време на една транзакция до 16 бита.

Имайте предвид също, че винаги има празнина между изпращаните думи/рамки. Така че дори когато попълните FIFO или използвате DMA, ще видите 16 тактови импулса, кратко забавяне и след това още 16 импулса.

Когато използвате GPIO щифт като SSEL, имайте предвид, че трябва да изчакате SSEL утвърждаване или де-утвърждаване, докато периферното устройство не е активно.

person madD7    schedule 16.10.2013