제목에서 알 수 있듯이 이미 nRF52832로 선정했다.
오늘은 왜 선정했는지 이유에 대해 이야기해보려고 한다.
혹시나 비슷한 고민을 하는 분에게 내 생각을 공유하면서 도움이 됐으면 한다.
내용 중에 반박하고 싶은 내용이 있으면 여러분 내용이 맞다.
Nordic社의 칩을 사용하는 건 정해졌으니 홈페이지에서 어떤 친구들이 있는지 찾아보자.
Nordic Bluetooth Low Energy Product List : Bluetooth Low Energy - nordicsemi.com
Bluetooth Low Energy
Want to add Bluetooth Low Energy connectivity to your product? We offer high quality SoCs with ultra-low power consumption and protocol stacks with excellent interoperability.
www.nordicsemi.com
위 링크를 타고 들어가면 아래에 비교표가 보일 것이다.
IMU 센서와 통신, 내부에서 데이터를 처리하거나 전송해야 되는 기능을 수행해야 되기 때문에
나는 아래와 같은 우선순위를 두고 선정했다.
0. 블루투스(BLE) 기능을 지원하는가
1. RAM, Flash memory 등 내부 용량은 넉넉한가
2. FPU(Floating Point Uint) 연산이 가능한가
3. SPI, I2C(여기에서는 TWI로 표현) 등 시리얼 통신이 가능한가
4. 현재도 생산이 되며 수급이 원활한가
5. QFN 패키지를 지원하는가
6. 그 외 보험으로 가져갈만한 기능이 있는가
그럼 하나씩 자세히 보도록 하자
0. 블루투스(BLE) 기능을 지원하는가
당연한 이야기지만 블루투스로 데이터를 전송해야 되기 때문에 BLE(Bluetooth Low Energy) 기능을 지원해야 한다.
BLE에 대해서는 별도의 포스팅으로 다루기로 하고,
여기에는 Nordic Bluetooth Low Energy Product List로 검색했으니 모두 해당된다.
모든 분들에게 주어지는 합격목걸이
1. RAM, Flash memory 등 내부 용량은 넉넉한가
다다익선이라는 말이 있듯이 내부 용량이 크면 클수록 좋다.
하지만 무한하게 늘릴 수도 없을뿐더러 가격도 같이 올라가기 때문에 적절한 범위를 선정하는 것이 좋다.
취미의 영역에서는 뭐 상관없으나 공학적인 영역에서는 최소 비용에 최대 효율을 내야 되니
이럴 때는 우리가 handling 해야 되는 데이터 크기를 한번 검토해 보면 좋다.
경우에 따라 IMU 센서의 데이터를 일정 시간 동안 받아 특징점을 찾아내야 될 수도 있기 때문에
Buffer의 개념으로 SoC 내 용량이 넉넉한지 확인한다.
간단하게 예를 들자면,
6축 가속도와 자이로 센서 데이터를 10 samples/sec 속도로 1분 동안 얻는다고 가정하자.
센서 데이터는 float 변수로 4 bytes로 할당된다.
'변수 할당 * 축 개수 * sample rate * 시간 = 필요 용량'으로 계산된다.
= 4 bytes * 6 * 10 * 60 = 14,400 bytes = 14,4 kbytes 가 필요하다.
시스템을 구동하기 위한 RAM과 Flash memory 도 물론 필요하기 때문에
가능하다면 2~4배 정도가 되는 용량으로 선정했다.
그래서 나는 32KB 이상 RAM, 256KB 이상의 Flash memory를 지원하는 친구로 선정 예정이다.
내부 용량으로 3명의 친구가 불합격 통보를 받았다.
2. FPU(Floating Point Unit) 연산이 가능한가
모든 일에는 보험이 필요하다. FPU도 그중 하나라고 볼 수 있다.
그런데도 6번으로 빼지 않은 이유는 이 기능은 50% 이상 필요하다고 생각했기 때문이다.
그대로 mobile로 전달한다면 상관은 없겠지만 적어도 한 번쯤은 SoC단에서 처리를 하지 않을까 하는 생각 때문이다.
해당 기능은 위키백과에서 친절하게 설명하고 있으니 아래 링크를 참고하면 된다.
부동소수점 장치 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
부동소수점 장치 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 부동소수점 장치(浮動小數點裝置, floating point unit, 줄여서 FPU)는 CPU의 일부로서 부동소수점 연산을 효율적으로 처리하기 위한 하드웨어 논리회로 모듈이다. 부
ko.wikipedia.org
얼마나 대단한 계산을 하길래 FPU까지 써?라고 생각하시는 분은 있을 것이다.
데이터 평균이나 사칙연산 같은 것은 굳이 안 써도 상관은 없다.
하지만 데이터로 FFT까지 해야 된다면 계산을 위해 CPU의 부하가 제법 커질 것이다.(제발 이런 일만은..)
간단하게 이야기하면,
FPU가 있으면 소수점 연산을 그대로 하면 되고,
FPU가 없으면 소수점을 정수로 변환 한 다음 연산을 거치고 소수점으로 변환하면 된다.
정수-소수점 변환해 주는 일이 추가된다고 보면 된다.
기왕이면 다홍치마라고 비용이 비슷하다면 편하게 FPU 기능을 지원하는 친구를 사용하자.
한 친구도 안녕
쓰다 보니 내용이 길어져서 나머지 내용은 2편으로 돌아오겠다.
참고
1. Nordic Bluetooth Low Energy Product List - Bluetooth Low Energy - nordicsemi.com
2. FPU(부동소수점 장치) 설명 - 부동소수점 장치 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
'개발 > BLE' 카테고리의 다른 글
[nRF52832] 4-1. 예제 코드 파해치기 1탄 - SPI (0) | 2023.04.19 |
---|---|
[nRF52832] 3. 개발 관련 자료(Layout, SoftDevice, SDK) 다운로드 방법, 가이드 (0) | 2023.04.12 |
[nRF52832] 2. IDE(Segger Embedded Studio) 다운로드 방법, 가이드 (0) | 2023.04.05 |
[nRF52832] 1-2. 소자 선정 방법, 가이드 2편(시리얼통신, 수급, 패키지, 보험) (0) | 2023.03.29 |
[nRF52832] 0. 시작 (0) | 2023.03.14 |