У мене шина SPI 2 МГц, але одне, що я помітив, це те, що деякі мої сигнали часто «тремтять». Так, мій тригер налаштований належним чином, тому я не думаю, що проблема полягає в цьому.
Ви можете бачити, що я тут маю на увазі: (це ввімкнений режим). Це годинник моєї шини SPI.
SPI працює добре. Я передавав сотні мегабайт на декількох платах і досі не бачив жодної проблеми. Але мені все одно цікаво дізнатися, що тут може бути проблемою. Крім того, я повинен турбуватися, щоб це виправити, навіть це працює?
Вимірювання проводилися прямо біля джерела за допомогою ДУЖЕ невеликого заземлення.
Це спрощена схема моєї схеми. Звичайно, на платі є більше SPI-пристроїв, але для цілей цього питання це точно, оскільки на платі ще нічого не припаяно, крім UC та SD-карти.
Майстер (AVR Mega 128) працює за допомогою внутрішнього RC-генератора - не знаю, чи це було б актуально, але оскільки сигнали зміщуються в часі, можливо, тремтіння генератора RC також закінчується в шині SPI. Просто думав, що це згадаю. Також сталося, що під час цих вимірювань я запускав контролер у нескінченну петлю. Ось код:
while(1)
{
setFirstBitOnDriver(driver); // this sends a 8-bit command on the SPI bus.
GLCD_SetCursorAddress(40); // Change cursor position on the display.
GLCD_WriteText("LED: ");
for(wire=0;wire<72;wire++)
{
itoa(wire+1,str,10);
GLCD_WriteText(str);
GLCD_SetCursorAddress(44);
_delay_ms(10);
shiftVectorOnDriver(driver); // another command on SPI. 8-bit wide.
}
}
Тремтіння / тремтіння може статися, коли внутрішній запуск працює 72 рази, а потім виходить. Оскільки для виконання перших трьох рядків потрібен додатковий час, можливо, кожен 73-й сигнал хвилі надходить у дещо інший час через додатковий час обробки. Якби мені довелося зробити ставку, я здогадуюсь, що це причина моєї проблеми (якби я міг би, я підтвердив би це миттєво, але мої дошки на роботі та наступний тиждень не працює!) Але я все одно хотів би думки / відповіді ДП з цього питання.
Але враховуючи, що UC працює на швидкості 8 МГц, я не тремтаю через програмне забезпечення, тому що це в наносекундах, а швидше мікросекундах. Але на 2-му малюнку видно рівну лінію. Це відбувається на дуже коротку секунду, коли всі форми хвилі зміщуються в часі і невидимі на екрані. Я здогадуюсь, що це пов'язано з циклом, і тремтіння на першому малюнку відбувається через RC-генератор.