2012-08-16 6 views
1

약간 긴 케이블을 허용하기 위해 i2c 버스 주파수를 변경하고 싶습니다.파이썬 smbus/i2c 주파수

python-smbus 패키지를 사용하고 있는데 아주 잘 작동하지만 버스 주파수를 설정하는 방법을 찾을 수 없습니다.

나는 docs을 조사했지만 버스 매개 변수 설정과 관련하여 원격으로 아무 것도 찾을 수 없었습니다.

파이썬으로 할 수있는 일이 있습니까? 아니면 저급이 필요합니까?

저는 ARM 아키텍처 인 Raspberry PI를 사용하고 있습니다.

답변

0

저는 이제 모든 옵션을 연구하는 데 상당한 시간을 투자했습니다. 그러나 실제로 다른 게시글에 명시된 바와 같이 낮은 레버 레지스터가있는 것으로 밝혀졌습니다. 그러나 Raspberry-Pi의 드라이버는 모든 용도에 따라 그 가치를 다시 설정하므로 거의 쓸모가 없습니다. 해결 방법은 사용자 정의 i2c 드라이버를 작성하거나 단순히 업데이트 된 버전을 기다리는 것입니다.

일부 하위 정보는 byval forum에서 찾을 수 있습니다.

0

낮은 수준에서 뭔가를해야합니다. 일반적으로이 항목은 커널의 board file에 의해 설정됩니다. 나는 리소스를 할당하는 것 외에 특별히 i2c로 수행되는 것을 보지 못했기 때문에 기본 클럭 제수를 사용할 가능성이 높습니다. datasheet 페이지의 28 페이지를 보면 기본값이 0x5dc라는 것을 알 수 있습니다. 더 긴 케이블을 처리하려면 레지스터에 다른 값 (아마 더 커야 함)을 설정해야합니다.

1

최신 Jessie 이미지가있는 Raspberry Pi에서이 값을 사용하여 현재 I2C 주파수를 확인할 수 있습니다 :
sudo cat /sys/module/i2c_bcm2708/parameters/baudrate.

dtparam=i2c_baudrate=50000

가 (원하는 주파수로 50000을 대체)에 :

변경/추가 할 수있는이 매개 변수 주파수를 변경하려면

/boot/config.txt

을하고 변경하기 위해 재부팅 회수.

+0

RPi3에서 Jessie를 사용하면'/ sys/module/i2c_bcm2708/parameters/baudrate' 파일이없고'/ sys/module/i2c_bcm2835/parameters/debug' 파일 만 존재합니다. – meowsqueak