고성능 IoT 종단점에서 조회 테이블을 사용할 경우 외부 플래시 메모리의 이점

작성자: Bill Giovino

DigiKey 북미 편집자 제공

사물 인터넷(IoT) 네트워크가 점점 복잡해지면서 IoT 종단점은 말단에서 더 복잡한 작업을 수행합니다. 따라서 클록 속도가 더 빠르고, 메모리가 더 많고, 프로세서 코어가 더 강력한 마이크로 컨트롤러를 포함하는 시스템으로 기존 종단점을 업그레이드해야 할 수 있습니다.

또한 높은 수준의 정확도를 갖춘 센서 및 아날로그 디지털 컨버터(ADC)가 필요하며 주기적으로 보정해야 할 수 있습니다. 공식을 사용하여 선형 오차를 쉽게 보정할 수 있습니다. 하지만 비선형 오차는 센서 판독값을 기준으로 설정된 편차 패턴을 따르지 않으므로 수학적으로 쉽게 보정할 수 없습니다. 펌웨어에서 비선형 오차를 보정하는 가장 간단한 방법은 필요한 수정 데이터를 데이터 조회 테이블과 함께 메모리에 저장하는 것입니다.

이 기사에서는 센서와 ADC 오류를 간략하게 살펴보고 데이터 조회 테이블을 사용하여 오류를 수정할 때의 이점을 설명합니다. 그런 다음 외부 ON Semiconductor LE25S161PCTXG 직렬 주변 장치 인터페이스(SPI) 플래시 메모리 칩을 사용하여 STMicroelectronics STM32L496VG 마이크로 컨트롤러 기반 시스템에서 실질적이고 비용 효율적인 데이터 플래시 조회 테이블을 구현하는 방법을 설명합니다.

센서 오차

온도, 압력, 전압 등 아날로그 조건을 감지하는 센서는 비선형 오차를 발생할 수 있습니다. 프로젝트 개발 단계 중에 정확한 레퍼런스를 기준으로 센서를 테스트하고 레퍼런스 값을 센서의 디지털 출력과 비교해야 합니다. 그러면 개발자가 레퍼런스 값과 센서 편차의 특성을 조기에 파악하고 응용 분야의 요구 사항에 따라 편차가 허용 가능한지 여부를 결정할 수 있습니다. 그런 다음 편차를 보정해야 할지 여부를 결정하고, 보정이 필요한 경우 하드웨어에서 보정할지 펌웨어에서 보정할지 여부를 결정할 수 있습니다.

일부 센서 오차는 예측 가능한 선형 오차일 수 있습니다. 이러한 오차를 보정하는 것은 센서 출력에서 상수 값을 더하거나 빼는 것만큼 간단할 수 있습니다. 이러한 오차는 센서의 크기에 따라 달라질 수 있습니다. 예를 들어, 0부터 전체 크기의 1/3까지는 상수를 더해야 하고, 1/3부터 1/2 크기까지는 다른 상수가 필요할 수 있습니다.

이러한 오차는 예측 가능하고 쉽게 수정할 수 있습니다. 하지만 누적 판독값 기준 오차는 시간에 따라 변경될 수 있습니다. 또한 극한 온도, 높은 주위 습도, 센서 노화 등에 노출되어 나중에 새로운 센서 오차가 발생할 수 있습니다. 이러한 오차를 수정해야 하는지 여부는 항상 응용 제품에 따라 다릅니다. 센서 동작을 파악하기 위해 극한의 온도, 압력 및 습도에서 시스템을 테스트해야 할 수도 있습니다. 이러한 환경 테스트는 자동차, 군사, 일부 산업용 시스템 등과 같은 응용 분야에서 필요합니다. 하지만 대부분의 새로운 IoT 종단점은 이전의 센서가 경험하지 않은 길을 걷고 있으므로 센서 테스트가 새롭게 요구될 수 있습니다.

또한 ADC와 같은 일반 마이크로 컨트롤러 아날로그 주변 장치는 아날로그 센서처럼 주기적인 시스템 내부 보정이 필요할 수 있습니다. ADC 오류가 항상 예측 가능한 것은 아닙니다. 알고리즘을 통해 초기 오류를 보정할 수 있더라도 시간에 따라 오류가 변경되어 알고리즘으로 쉽게 보정하지 못할 수도 있습니다. 이 경우 시스템이 더 이상 필요한 정확도로 작동할 수 없으므로 높은 교체 비용이 발생합니다.

데이터 조회 테이블을 사용하여 아날로그 센서 오차를 보정할 경우의 이점

데이터 조회 테이블은 삼각 함수처럼 복잡하거나 바이트 비트 반전 또는 그레이 코드로 바이트 변환처럼 간단한 일반 계산을 빠르게 수행할 수 있는 실질적이고 효과적인 방법입니다. 바이트 비트 반전에서 256바이트 조회 테이블을 사용하면 펌웨어에서 비트 반전을 수행할 때보다 훨씬 빠릅니다. 이 조회 테이블은 약간의 공간만 차지하고 변경할 필요가 없으므로 프로그램 또는 데이터 플래시 메모리에 저장하는 것이 좋습니다.

또한 데이터 조회 테이블은 센서 보정 데이터를 저장하는 매우 실용적인 방법입니다. 마이크로 컨트롤러 아날로그 주변 장치(예: 내장된 ADC)는 아날로그 센서와 정확히 동일한 방법을 사용하여 주기적으로 보정해야 할 수 있습니다. 대부분의 마이크로 컨트롤러에서 발견되는 ADC의 정확도는 ±2 또는 ±3 최하위 비트(LSB)입니다. 이 값은 대부분의 응용 제품에 적합할 수 있지만 높은 정확도가 필요한 시스템의 경우 ADC를 주기적으로 보정하는 것이 좋습니다.

24비트 데이터를 수정하는 부분 보정 조회 테이블은 표 1과 비슷합니다.

센서 판독값   센서 보정값
:   :
01 AB 24h   00 01 AB 21h
01 AB 25h   00 01 AB 22h
01 AB 26h   00 01 AB 24h
:   :

표 1: 24비트 보정 데이터를 위한 데이터 조회 테이블 예의 일부입니다. 원시 입력값은 오차를 보정해야 하는 소스 판독값입니다. 이 원시값은 24비트 주소로 사용되며 최상위 바이트가 항상 00h인 해당 32비트 보정값을 조회하는 데 사용됩니다. (표 데이터 출처: DigiKey)

이 예에서 원시 입력값은 오차를 보정해야 하는 소스 판독값입니다. 이 원시값은 24비트 주소로 사용되며 최상위 바이트가 항상 00h인 해당 32비트 보정값을 조회하는 데 사용됩니다. 조회 테이블이 주소 0에서 시작되지 않는 경우 원시 입력값에 오프셋을 더할 수 있습니다.

조회 테이블을 저장할 위치를 결정하기 전에 조회 테이블의 크기와 조회 테이블을 다시 작성해야 하는지 여부를 결정하는 것이 좋습니다. 둘 다 중요합니다. 마이크로 컨트롤러에 사용 가능한 온칩 플래시에 맞는 조회 테이블은 다시 작성할 필요가 없는 경우에 적합합니다. 하지만 센서를 주기적으로 다시 보정해야 하는 경우 즉, 내부 플래시를 다시 작성해야 하는 경우 전체 플래시 섹터에서 테이블을 지우고 다시 프로그래밍해야 합니다.

플래시 섹터가 프로그램 메모리와 공간을 공유하는 경우 코드를 다시 컴파일해야 할 수 있습니다. 조회 테이블이 전용 섹터에 있더라도 나중에 메모리 요구 사항이 변경되거나 확장되면 추가 코드를 위해 조회 테이블 섹터 공간의 일부가 용도 변경될 수 있습니다. 이 경우 현장에서의 센서 보정이 복잡해지며, 네트워크에서 다시 컴파일된 코드를 다운로드하도록 요구하여 IoT 종단점을 독자적으로 자체 보정하는 것을 방지할 수 있습니다. 센서가 여러 개 사용되는 경우 문제는 더욱 복잡해집니다.

온칩 플래시 프로그램 메모리의 경우 대규모 조회 테이블(예: 16,777,216개 항목 테이블)에서 24비트 디지털 데이터를 보정하는 것이 실용적이지 않거나 불가능할 수 있습니다. 항목을 하나씩 건너뛰며 저장하고 기존 테이블 데이터를 기반으로 하여 누락된 항목에 대한 결과를 보간할 경우 조회 테이블의 크기를 1/2로 줄일 수 있습니다. 이 경우 약간의 성능 감소와 ±1LSB의 정확도 손실이 발생합니다. 하지만 이 8,388,608개 항목 조회 테이블은 내부 플래시에 저장하는 것이 실용적일 수 있습니다.

마이크로 컨트롤러 기반 시스템의 대규모 데이터 조회 테이블에 가장 적합한 솔루션은 외부 플래시 메모리입니다. 그러면 내부 플래시 프로그램 메모리에 영향을 주지 않고 수 MB의 조회 테이블을 쉽게 추가할 수 있습니다. 또한 마이크로 컨트롤러의 내부 플래시 메모리를 방해하지 않고 시스템에서 조회 테이블을 쉽게 다시 작성할 수 있습니다.

고성능 시스템의 경우 프로그램 메모리 확장과 데이터 메모리 확장 모두에서 외부 병렬 플래시 메모리를 추가하는 것이 일반적입니다. 하지만 외부 데이터 버스가 장착된 마이크로 컨트롤러가 필요합니다. 추가 주소와 데이터 버스 및 필요한 제어 신호에서 36개 이상의 마이크로 컨트롤러 핀을 사용할 수 있습니다. 이 요구 사항은 응용 제품에 사용 가능한 마이크로 컨트롤러를 제한합니다. 또한 이러한 외부 버스는 추가 PC 기판 공간을 차지하며 시스템의 전자파 장해(EMI)를 높일 수 있습니다.

대부분의 시스템에 가장 적합한 솔루션은 데이터 전송에 직렬 주변 장치 인터페이스(SPI)를 사용하는 외부 직렬 데이터 플래시 메모리를 사용하는 것입니다. 이 경우 마이크로 컨트롤러에 핀이 4개만 필요합니다.

이러한 플래시 메모리 장치의 좋은 예로 ON Semiconductor의 LE25S161PCTXG를 들 수 있습니다. 이 장치는 70MHz SPI 클록을 지원하는 16Mb 직렬 플래시 메모리 장치입니다. 하지만 140Mb/초의 최고 속도로 데이터를 전송할 수 있는 이중 SPI 모드도 지원합니다. 장치의 읽기, 쓰기 및 저전력 모드를 구성하는 데 내부 상태 레지스터가 사용됩니다.

LE25S161PCTXG에서는 클록, 데이터, 칩 선택을 위해 일반 SPI 신호를 사용합니다(그림 1). 또한 두 개의 추가 핀이 있습니다. WP\는 장치의 상태 레지스터에 대한 쓰기를 금지하는 Low 활성 쓰기 금지 신호입니다. 이 신호를 사용하여 우선순위가 낮은 펌웨어 작업에서 장치를 무단으로 다시 쓰지 않도록 할 수 있습니다. HOLD\는 진행 중인 데이터 전송을 일시 중지합니다. 이 기능은 데이터를 전송 중인 동안 마이크로 컨트롤러에서 인터럽트를 처리해야 하는 경우에 유용합니다. 인터럽트가 처리될 때까지 데이터 전송을 일시 중지했다가 중단된 위치에서 다시 시작할 수 있습니다.

ON Semiconductor의 LE25S161PCTXG 직렬 플래시 메모리 구성도

그림 1: ON Semiconductor의 LE25S161PCTXG 직렬 플래시 메모리는 실장 면적이 3mm x 4mm인 초소형 8핀 UDFN 패키지에서 사용 가능하며 클록, 데이터 및 칩 선택을 위한 일반 SPI 신호를 사용합니다. (이미지 출처: ON Semiconductor)

이 장치에 저장된 간단한 2열 조회 테이블을 읽는 가장 쉬운 방법은 센서 판독값을 가져와서 오프셋에서 메모리를 추가한 다음 해당 주소 위치에서 메모리 콘텐츠를 읽는 것입니다. 이 주소의 메모리 콘텐츠는 수정된 센서 판독값을 나타냅니다.

고성능 IoT 종단점에는 빠른 클록 속도, 고성능 프로세서 및 유연한 SPI가 필요합니다. 이러한 응용 분야를 위해 STMicroelectronics는 고성능 STM32L4 마이크로 컨트롤러 제품군을 제공합니다. 예를 들어, STM32L496VG 마이크로 컨트롤러는 80MHz에서 실행되고 부동 소수점 처리 장치(FPU)가 포함된 Arm® Cortex®-M4 코어를 가진 STM32L4 제품군의 구성품입니다. 이 장치에는 8Mb 플래시와 320KB SRAM이 있습니다. 이 장치는 1.71V~3.6V의 작동 전압을 지원하며 ON Semiconductor LE25S161PCTXG의 작동 전압 1.65V~1.95V와 겹칩니다.

STM32L496VG에는 캘린더 기능이 있는 실시간 클록(RTC) 1개, 초당 5Ms(MSPS) ADC 3개, 2채널 디지털 아날로그 컨버터(DAC) 1개, 계측 제어기 통신망(CAN) 인터페이스 2개, I2C 인터페이스 4개를 비롯하여 고성능 IoT 종단점을 위한 전체 주변 장치가 있습니다(그림 2). 또한 표준 SPI 인터페이스 3개와 쿼드 SPI 인터페이스 1개가 있습니다.

80MHz Arm Cortex-M4를 기반으로 하는 STMicroelectronics의 STM32L496 마이크로 컨트롤러 구성도(확대하려면 클릭)

그림 2: STM32L496 마이크로 컨트롤러는 FPU가 포함된 80MHz Arm Cortex-M4를 기반으로 하며 40MHz 쿼드 SPI 인터페이스를 비롯한 전체 주변 장치 어레이가 있습니다. (이미지 출처: STMicroelectronics)

STM32L496VG 개발은 STM32L496G-DISCO Discovery 기판에서 지원됩니다(그림 3). 이는 IoT 종단점을 위한 전체 기능을 갖춘 개발 기판이며 스테레오 미세 전자 기계 시스템(MEMS) 마이크, 8비트 카메라 커넥터, LED 8개, 4방향 조이스틱, 240픽셀 x 240픽셀 컬러 LCD를 포함합니다. 커넥터 핀에서 ADC 입력, 쿼드 SPI 핀 및 대부분의 I/O를 사용할 수 있습니다.

STMicroelectronics의 STM32L496G-DISCO Discovery 기판 이미지

그림 3: STM32L496G-DISCO Discovery 기판은 ST32L496VG용 하드웨어 및 펌웨어 개발을 위한 전체 평가 환경입니다. (이미지 출처: STMicroelectronics)

STM32L496VG의 쿼드 SPI는 40MHz의 최대 SPI 클록과 표준 및 메모리 매핑 SPI 모드를 지원합니다. 쿼드 SPI는 이중 SPI 모드를 지원하여 최대 80Mb/초로 데이터를 전송할 수 있습니다.

STMicroelectronics의 쿼드 SPI는 직렬 데이터 플래시 메모리 장치에 빠른 인터페이스를 제공합니다. 표준 SPI 모드에서 모든 작업은 SPI 레지스터를 사용하여 수행됩니다. SPI 데이터 레지스터를 읽고 써서 데이터를 전송합니다. 데이터를 수신할 때 인터럽트가 생성됩니다. 이는 STM32L496VG의 세 표준 SPI와 동일한 작동 모드입니다. 표준 SPI 모드에서는 단일, 이중 및 쿼드 데이터 전송을 지원합니다. ON Semiconductor LE25S161은 단일 및 이중 SPI 모드를 지원하며 이중 SPI 모드에서 STM32L496VG와 쉽게 연결될 수 있습니다(그림 4).

STMicroelectronics의 STM32L496VG 쿼드 SPI 직렬 포트 구성도

그림 4: STMicroelectronics STM32L496VG의 쿼드 SPI 직렬 포트는 이중 SPI 모드에서 ON Semiconductor LE25S161에 접속하여 80Mb/초의 40MHz SCLK에서 SIO0 및 SIO1을 따라 양방향으로 데이터를 전송할 수 있습니다. (이미지 출처: DigiKey)

ON Semiconductor 및 STMicroelectronics의 부품을 선택하여 이 상황에서 데이터 조회 테이블을 간단하고 쉽게 구현할 수 있습니다. 또한 쿼드 SPI에는 대용량 데이터 전송에 유용한 FIFO가 있습니다. 하지만 한 번에 하나의 메모리 위치에만 액세스해야 하는 조회 테이블의 경우 FIFO는 필요하지 않고 불필요한 지연 시간을 늘릴 수 있으므로 비활성화하는 것이 좋습니다.

메모리 매핑 모드를 지원하는 쿼드 SPI

또한 쿼드 SPI는 메모리 매핑 모드를 지원합니다. 이 모드에서는 외부 직렬 플래시를 마이크로 컨트롤러의 프로그램 또는 데이터 메모리 공간에 매핑합니다. 그러면 마이크로 컨트롤러 펌웨어에서 외부 SPI 플래시를 마이크로 컨트롤러의 자체 메모리인 것처럼 액세스할 수 있습니다. 따라서 쿼드 SPI가 펌웨어에 투명하게 작동합니다.

조회 테이블에 자주 액세스하는 경우 메모리 매핑 모드에서 조회 테이블을 구현하면 표준 SPI 모드에 비해 응용 제품 펌웨어를 간소화하는 것 이외에 큰 이점이 없을 수도 있습니다. 하지만 응용 제품이 인터럽트가 빈번한 환경인 경우 응용 제품을 처리하기 위해 SPI 전송이 반복적으로 중단될 수 있습니다. 다른 응용 제품에 대해 쿼드 SPI 조회 작업 하나를 중단할 경우 더욱 복잡해질 수 있습니다.

조회 테이블에 빈번하게 액세스하고 인터럽트가 잦은 환경에서는 메모리 매핑 모드가 표준 SPI 모드에 비해 더 효과적일 수 있습니다. 이는 펌웨어를 간소화하고, 우선순위가 다른 쿼드 SPI를 동시에 액세스하므로 문제가 예방되며, 인터럽트 충돌을 줄입니다.

하지만 메모리 매핑 조회 테이블을 구현할 경우 데이터 캐시가 무효화될 수 있다는 한 가지 단점이 있습니다. STM32L496에는 데이터 캐시가 없지만 고성능 실시간 응용 분야를 대상으로 하는 일부 마이크로 컨트롤러에는 데이터 캐시가 있습니다. 조회 테이블에 액세스할 때 캐시가 누락될 가능성이 있습니다. 이는 대부분의 응용 분야에서 동일한 스레드 또는 하위 루틴에서 동일한 조회 테이블 위치에 두 번 액세스해야 할 가능성이 매우 낮기 때문입니다. 따라서 조회 테이블 데이터는 처음에는 캐시되지 않고, 데이터를 캐시하면 중요한 데이터가 데이터 캐시에서 제거될 수 있습니다. 이는 초고성능 응용 분야에서만 문제가 되며, 이러한 고성능 응용 분야에서는 처음에 데이터 캐시가 필요합니다.

조회 테이블에 의한 데이터 캐시 오염에 대한 솔루션은 제한됩니다. 하드웨어에서 지원하는 경우 조회 테이블 영역을 캐시 불가능으로 표시할 수 있습니다. 다른 솔루션은 조회 테이블에 액세스하기 전후에 데이터 캐시를 비활성화했다가 다시 활성화하는 것입니다. 이 방법은 캐시를 켜고 끌 때 성능 저하가 허용되는 경우에 사용할 수 있습니다. 일부 데이터 캐시는 캐시 오염을 방지하기 위해 지원할 수 있는 아키텍처 특정 캐시 제어 명령을 지원합니다. 데이터 캐시를 구성할 때 시스템 성능을 벤치마킹하여 특정 응용 분야에 가장 적합한 방법을 찾아야 합니다.

트레이스가 120mm를 초과하지 않도록 직렬 플래시를 PC 기판에 배치해야 합니다. 전파 방해를 방지하려면 다른 신호와의 SPI 클록 신호 경로가 PC 기판 트레이스 폭의 최소 3배 이상이어야 합니다. 스큐를 방지하려면 모든 양방향 데이터 신호가 서로 10mm 이내에 있어야 합니다.

결론

외부 SPI 플래시 장치는 IoT 종단점에서 대규모 데이터 조회를 구현하는 데 효과적인 솔루션입니다. 시스템 내에서 쉽게 다시 프로그래밍하고, 쉽게 업그레이드 가능하며 최소한의 마이크로 컨트롤러 리소스를 사용합니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Bill Giovino

Bill Giovino

Bill Giovino는 시러큐스 대학(Syracuse University)에서 전자 공학 학위를 취득한 전자 엔지니어이며, 설계 엔지니어링에서 현장 애플리케이션 엔지니어링은 물론 기술 마케팅에 이르기까지 바로 투입 가능한 몇 안 되는 실력자 중 하나입니다.

Bill은 25년 이상 STMicroelectronics, Intel, Maxim Integrated를 비롯한 다양한 회사의 기술 및 비기술 담당자를 대상으로 신기술을 홍보해 왔습니다. STMicroelectronics 재직 중 Bill은 마이크로 컨트롤러 업계에서 회사의 초기 입지를 다지는 데 공헌했습니다. Infineon에서는 미국 자동차 업계에서 회사 최초로 마이크로 컨트롤러 설계를 성공으로 이끌어 내는 역할을 했습니다. Bill은 직접 설립한 CPU Technologies의 마케팅 컨설턴트로 일하면서, 많은 업체들이 실적이 저조한 제품의 실적을 개선하는 데 도움을 주고 있습니다.

Bill은 최초의 전체 TCP/IP 스택을 마이크로 컨트롤러에 배치하는 것을 비롯하여 사물 인터넷을 조기에 수용한 바 있습니다. Bill은 '교육을 통한 판매'라는 메시지와 온라인을 통한 제품 홍보에 있어 커져 가는 명확하고 분명한 의사 소통의 중요성 전달에 전념하고 있습니다. Bill은 LinkedIn의 인기 그룹인 Semiconductor Sales & Marketing Group의 중재자이며, B2E에 유창합니다.

게시자 정보

DigiKey 북미 편집자