근거리 보드-보드 통신


24

내 MCU는 약 4 개의 장치가있는 SPI 버스를 실행합니다. 이 버스를 보드 외부로 확장하고 싶습니다. 즉, 일부 PCB를 "메인"보드에 연결하고 기능을 확장하고 싶습니다. "패드 간"거리는 다음과 같습니다.

메인 보드의 트레이스 길이 + 연장 보드의 케이블 길이 + 트레이스 길이

3 "+ 6"+ 3 "= 약 12"

내 경험상 리본 케이블을 통해이 거리에서 약 7ns의 상승 시간을 갖는 1MHz 신호조차도 1V 이상으로 오버 슈팅되었습니다 (그러나 과도한 울림은 없었습니다). 보드는 동일한 전원 공급 장치로 전원이 공급됩니다.

여기에 이미지 설명을 입력하십시오

참고 : 여기에서는 상승 시간을 볼 수 없지만 과도한 오버 슈트를 볼 수 있습니다. 이것은 3.3V 신호입니다. 그리고 네, 이것은 프로브에서 접지까지 매우 짧은 와이어로 올바르게 측정되었습니다. 이 사이트에서 자주 권장되는 것과 비슷합니다. 나는 그것이 측정 오류라고 생각하지 않습니다.

시스템이 4 MHz에서 작동하기를 원하지만 2 MHz도 허용됩니다. 최대 연결하려는 보드의 수는 약 4 개이며 SPI 버스를 확장하여 약 12 ​​개의 장치를 갖습니다. 나는 이미 이런 식으로 작동하기 때문에 코드를 통해 관리하기가 너무 어려울 것이라고 생각하지 않습니다. 추가 슬레이브 선택 라인을 갖는 것도 문제가되지 않습니다.

그러나 내 관심사는 한 보드에서 다른 보드로 SPI 데이터를 보내는 방법입니다. 직선 SPI를 보내거나 한쪽 끝을 LVDS로 변환 한 다음 다른 쪽 끝을 SPI로 다시 변환해야합니까?


1
당신의 상승 시간은 무엇입니까?
Kortuk

@Kortuk 완전히 나열하는 것을 잊었습니다. 죄송합니다. 질문을 업데이트했습니다.
Saad

7nS 상승 시간, 그것은 비명을 지르고 있습니다.
Kortuk

관련이없는 두 가지 질문에 대해 죄송합니다. 사용한 오실로스코프는 무엇입니까? 2. 왜 고리가 그렇게 중요한가?
richieqianle

답변:


15

룰 오브 썸은 연결 길이가 신호 파장의 1/10보다 긴 경우 전송 라인 효과를 계산해야한다고 말합니다.

여기에 이미지 설명을 입력하십시오

전송선은 임피던스의 갑작스런 변화를 나타내는 곳에 반사를 일으 킵니다. 반사 된 신호는 원본에 추가되고, 송신기 측에서 다시 반사 될 수 있으며, 그런 식으로 앞뒤로 이동합니다. 결과는 그래프에 표시됩니다 : 말씀하신 오버 슈트 및 일부 울림.

ΩΩ 저항으로 시작하고 그것이 우리에게 얼마나 멀리 가는지보십시오.

편집 (질문 업데이트)
상승 시간은 7ns 인 것으로 보입니다. Kortuk이 말했듯이, 이는 400MHz 이상의 스펙트럼을 가지고 있으며 클럭이 1MHz에 불과하더라도 실제로 고조파가 전송 라인 효과를 겪을 것임을 의미합니다. 20MHz 대역폭 (4MHz 클럭의 경우 80MHz)으로 충분한 상승 시간을 제공합니다. 이것은 20MHz에서 브릭 월 LPF로 필터링 된 1MHz 구형파입니다 .

여기에 이미지 설명을 입력하십시오

직렬 저항을 배치하면 라인 커패시턴스가있는 1 차 LPF가 형성됩니다. 50pF로 추정하면

R=12π100MHz50pF=32Ω

Ω


2
1MHz 주파수는 관련이 없습니다. 중요한 상승 시간입니다.
Rocketmagnet 2016 년

@stevenvh, 목적지의 접지에 1K 저항을 추가하려고했습니다. 그것은 급등에 도움이되었지만 신호 레벨을 조금 낮추었습니다. 그게 정상인가요? 신호가 내려지는 레벨을 말하면. 또한 500 Ohms, 220 Ohms와 동일한 효과를 보였지만 더 두드러졌습니다.
Saad

@Saad-비트는 얼마입니까? 1k의 3.3V는 3mA에 불과하므로 드라이버가 완벽하게 공급할 수 있어야합니다. 내부 저항이있을 수 있지만 수십 옴이므로 레벨은 2 또는 3 % 만 낮아야합니다.
stevenvh 2016

@stevenvh 나는 라인에 저항을 직렬로 연결하는 것을 잊었으므로 분명히 약간의 전압을 떨어 뜨릴 것이다. 바보 나! 그러나 180 옴 저항조차도 큰 도움이되지 못했습니다. 오버 슈트를 4.5V로 가져 왔습니다. 나는 훨씬 더 낮은 저항이 필요하다고 생각하지만 전류 인출에 대해 걱정해야합니다.
Saad

또한 적극적 종료를 고려해야합니까? 낮은 저항을 사용하면 전체 보드의 전력 요구 사항이 증가하고 버스가 항상 작동하므로 전력 소비가 증가합니다. 쇼트 키 다이오드를 클램프로 사용할 수 있습니까?
Saad

6

이러한 짧은 버스의 경우 라인을 구동하는 것과 작은 저항을 직렬로 연결하려고합니다. 그것은 전송선 이론을 고려한 이론적 인 이상적인 방법은 아니지만, 귀하의 경우에 충분히 효과적이라고 생각하는 실용적인 접근 방식입니다. 스타터에는 47Ω을 시도하고 그 기능을 확인하십시오. 그래도 충분하지만 충분하지 않으면 더 높아질 수 있지만 120Ω을 초과하지는 않습니다. 그 범위 어딘가에 충분히 효과가있는 값을 찾을 수있을 것입니다.


나는 그 접근법을 시도했다, Olin. 100 옴 저항을 사용했는데 오버 슈트를 약 500mV 떨어 뜨려 4.7V에서 4.3V로 낮추었습니다. 여전히 3.3V 이상의 볼트입니다! 상승 시간은 초기 7과 비교하여 12ns였다.
Saad

답변을 올리는 동안 저항을 계산 한 것 같습니다. Olin. 그것에 대해 죄송합니다
stevenvh

@OlinLathrop 나는 직렬 저항을 330 Ohm으로 높이고 오버 슈트를 3.7V로 만들었다. 나는 이것에 매우 만족합니다. 상승 시간은 10ns였다. 보드의 다음 개정판에서 이것을 고수하거나 종단 저항을 넣어야합니까? 120 Ohm을 초과하지 않는 것이 좋습니다.
Saad

@Saad : 다른 부하가 회선에 미치는 영향이 걱정되어 소음에 취약 해졌습니다. 신호가 깨끗하고 라인에 DC 부하가없는 경우 (예를 들어 고 임피던스 CMOS 입력) 300 옴을 사용하십시오.
Olin Lathrop

4

드라이버가로드를 구동 할 수있는 경우 적절한 종료로 AFAIK 오버 슈트를 제거 할 수 있습니다. 그렇지 않으면 LVDS와 같은 일부 전용 드라이버 / 수신기 쌍 또는 RS485도 확실히 할 것입니다.


+1 : SPI 신호를 전달하기 위해 LVDS를 자주 사용합니다.
Jason S

1

과거에 리본 케이블을 통해 SPI를 실행하는 데 심각한 문제가 있었지만 설명 한 것보다 훨씬 깁니다. 내 노이즈는 실제 문제가되었고, 손상된 명령으로 인해 내 주변 장치에 도달했습니다. CE 노이즈 내성 테스트에 실패하면 충분합니다. 나중에 이와 관련하여 문제가 발생하면 각 보드에 별도의 MCU를 배치하고 CANbus를 통해 연결하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.