DS1337 시계 정보 설정 및 읽기, 알람 시계 설정에는 소프트웨어 작성이 필요합니다. 이 시스템은 Linux 운영 체제에서 실행됩니다. DS1337은 시스템의 하드웨어 장치이며 Linux 운영 체제의 드라이버를 통해 완료됩니다.
리눅스 시스템에서 장치는 캐릭터 장치와 블록 장치라는 두 가지 유형으로 구분됩니다. DS1337은 문자 장치입니다. 사용자 모드 프로그램은 일반 파일과 마찬가지로 이러한 유형의 장치에서 작동할 수 있습니다. 따라서 문자 장치 드라이버는 Open(), Close(), Read() 및 Write()의 네 가지 기능을 구현해야 합니다. . 시스템 호출 기능. 이 네 가지 시스템 호출 함수는 커널 데이터 구조 file_Operations 내부의 네 가지 항목입니다. 또한 장치 드라이버는 inode 구조와 파일 구조라는 두 가지 데이터 구조와도 관련됩니다. 그러나 직접적으로 관련된 데이터 구조는 file_Operations입니다. Linux 시스템 드라이버 작성 및 테스트에는 주로 다음 단계가 포함됩니다.
(1) Open(), Close(), Read(), Write() 및 기타 시스템과 같은 다양한 파일 작업 함수 작성 함수;
(2) file_Operations 구조체를 선언하고 구조체 멤버에 값을 할당합니다.
(3) 초기화 함수와 지우기 함수를 작성하고 이 두 가지를 다음과 같이 정의합니다. 두 개의 매크로 module_init 및 module_exit 기능;
(4) 문자 장치 진입점을 만듭니다. 즉, mknod/dev/ds1337cxxx0 명령을 사용하여 장치 파일 노드를 만듭니다. 그 중 c는 문자 장치를 나타냅니다. .블록 장치인 경우 위치는 b여야 합니다. 매개변수 xxx는 장치의 주요 장치 번호를 나타내고 0은 장치의 보조 장치 번호를 나타냅니다.
(5) 테스트를 작성합니다.
(6) insmodds1337.o 명령을 사용하여 드라이버를 로드합니다.
(7) 테스트 프로그램을 실행하여 드라이버를 테스트합니다.
(8 ) rmmodds1337.o 명령을 사용하여 드라이버를 제거합니다.
사실 테스트 과정에서 문제가 발견되면 각 파일 작업 기능을 수정해야 하며 이후 위 프로세스를 다음에서 다시 시작할 수 있습니다. 최종적이고 완벽한 드라이버가 형성될 때까지 step 1.
DS1337 I2C 버스의 데이터 전송 속도는 표준 모드에서 100Kbit, 고속 모드에서 400Kbit입니다. I2C 버스의 START 조건 및 STOP 조건과 데이터 비트의 전송 타이밍의 경우 EP9315에는 더 이상 하드웨어 제어 회로가 없으므로 프로그래밍이 필요합니다. I2C 버스에서는 SCL 신호 라인이 로우 레벨일 때 데이터 변경이 발생하며, SCL 신호가 하이 레벨일 때 데이터 라인 SDA의 데이터 신호는 안정적으로 유지되어야 합니다. START 조건은 SCL 신호가 하이 레벨일 때 SDA가 레벨을 하이에서 로우로 변경한 후 데이터 전송 프로세스를 시작하는 것입니다.
STOP 조건은 SCL 신호가 하이이고 SDA가 로우에서 하이로 레벨 변경을 생성하고 다음 몇 클록 사이클에서 버스가 해제되어 "유휴" 상태가 되는 경우입니다. Linux 시스템에서는 짧은 지연 기능인 udelay(unsignedlongusecs)를 사용하여 I2C 버스에서 지연 기능을 구현할 수 있습니다. 여기에는 특정 드라이버가 제공되지 않습니다.