Sức mạnh về trạng thái của GPIO là gì?


35

Trạng thái của GPIO khi cấp nguồn là gì? vd: Cao, Thấp, Hi-Z?

Ngoài ra có hệ điều hành nào thay đổi trạng thái của bất kỳ GPIO nào khi tải không? Hy vọng là không.


Trừ khi nó nằm trong bảng dữ liệu, bạn có thể phải đo nó để chắc chắn. Linux không "biết" về GPIO vì vậy nó sẽ không thay đổi chúng trong khi khởi động (trừ khi bạn tạo một kịch bản khởi động đã làm), nhưng luôn có khả năng ROM có thể.
Malvineous

@Malvineous, bạn không chính xác. Linux biết về GPIO và hỗ trợ được tích hợp ngay trong kernel. Dưới đây là một số tài liệu: kernel.org/doc/Documentation/gpio.txt
Emmaly Wilson

2
@DustyWilson: Xin lỗi nếu tôi không rõ ràng, ý tôi là nhân Linux lõi không sử dụng GPIO trong khi khởi động. Nó chỉ làm cho chúng có sẵn cho không gian người dùng và trình điều khiển cụ thể. Vì vậy, kernel stock không nên thay đổi trạng thái của các chân GPIO trong khi khởi động.
Malvineous

@Malvineous: À, gotcha.
Emmaly Wilson

Câu trả lời:


11

Tôi đã tìm thấy câu trả lời ở đây nhờ russellstrong . Tôi trích dẫn phần có liên quan dưới đây

Tôi đã đi đến kết luận về điện trở kéo / độ nhạy của mạch của tôi với điện trở kéo xuống. RPi không đặt GPIO thành đầu ra khi khởi động lần đầu tiên. Nó đang bật một điện trở kéo xuống trong 740 mili giây.

Tôi đã sử dụng hai điện trở 18K (3v3 -> GPIO -> GND) để xem xét chính xác những gì đang xảy ra với các chân. Đây là dấu vết. Dòng màu xanh là nguồn 3v3, dòng màu vàng là dòng GPIO.

nhập mô tả hình ảnh ở đây


Bạn có thể làm rõ một chút? Khi Raspberry Pi khởi động, GPIO được đặt ở trạng thái đầu vào, trở kháng cao?
Alex Chamberlain

1
@AlexChamberlain, Có vẻ như chip Broadcom khởi động với pulldowns, nhưng bộ nạp sẽ xóa các pulldown để chúng có trở kháng cao (đầu vào)
John La Rooy 18/07/12

9

Khi bắt đầu sử dụng bản phân phối Debian được đề xuất cho RPi, GPIO bị tắt. Bạn phải kích hoạt từng pin riêng lẻ.

Nếu bạn đang thực hiện thông qua / sys, bạn sẽ thấy "Đường dẫn trong Sysfs" thú vị (tìm kiếm trong http://www.kernel.org/doc/Documentation/gpio.txt ). Cụ thể, bạn sẽ kích hoạt mã pin bằng cách "xuất" nó. Bất kỳ lệnh nào dưới đây giả sử bạn đang chạy với quyền root (sudo hoặc cách khác) hoặc bạn đã thay đổi quyền / quyền sở hữu của các tệp ảo đang được sửa đổi.

echo 4 > /sys/class/gpio/export

Điều này cho phép chân GPIO # 4 sau đó khiến / sys / class / gpio / gpio4 tồn tại, chứa một số tệp ảo. Các tệp này bao gồm "hướng" xác định xem đó là đầu vào hay chân đầu ra, "giá trị", chỉ đọc cho đầu vào hoặc có thể ghi cho đầu ra và chứa giá trị hiện tại và các giá trị khác.

echo out > /sys/class/gpio/gpio4/direction # set it as an output pin
echo 1 > /sys/class/gpio/gpio4/value # set the value to ON
echo 0 > /sys/class/gpio/gpio4/value # set the value to OFF
echo in > /sys/class/gpio/gpio4/direction # set it as input
cat /sys/class/gpio/gpio4/value # get the value
echo 4 > /sys/class/gpio/unexport # disables pin 4 and removes the gpio4 directory

Tất nhiên, có lẽ bạn sẽ thích sử dụng một số thư viện có sẵn để làm GPIO được cung cấp hoặc tương thích với ngôn ngữ bạn chọn. Nhưng nếu bạn muốn một cái gì đó đơn giản, bạn có thể chỉ cần giao tiếp trực tiếp với sysfs để thực hiện GPIO rất cơ bản.


Điều này rất hữu ích. Tôi đã xem bảng dữ liệu nhưng không thể tìm thấy trạng thái mặc định của các chân. Điều này rất quan trọng nếu bạn đang điều khiển mọi thứ bằng các chân và không muốn các thiết bị ngoại vi bật trong khi os đang tải.
John La Rooy

3
Đây là một câu trả lời tuyệt vời, nhưng tôi không chắc nó thực sự trả lời được câu hỏi. Trạng thái của GPIO ngay sau khi được bật là gì? và hướng đặt?
Alex Chamberlain

@gnibbler: Tôi tin rằng bạn sẽ chỉ cần kiểm tra nó. Tôi đã thử nó một chút trước đây và tôi thấy không có gì bất ngờ liên quan đến một cái gì đó bật hoặc tắt. Tôi không biết hoặc hứa rằng kinh nghiệm của tôi là điều tôi mong đợi. Tôi muốn nói rằng bạn chỉ nên ném đồng hồ vạn năng hoặc tương tự với các chân bạn muốn kiểm tra và sau đó khởi động lại hoặc quay vòng nguồn Pi nhiều lần để kiểm tra. Những gì tôi thấy là tất cả các chân đều tắt, như thể không có nguồn điện nào cho Pi cho đến khi tôi tự bật từng chân.
Emmaly Wilson

@DustyWilson, có lẽ chúng được thiết lập làm đầu vào không có kéo lên hoặc kéo xuống sau đó. Điều này có nghĩa là chúng nổi một cách hiệu quả nếu được kết nối với FET và sẽ gây ra hành vi ngẫu nhiên nếu điện trở kéo lên / xuống không được thêm vào cổng
John La Rooy

thực sự ... cat /sys/class/gpio/gpio4/directionnói "trong". Tôi đọc trong biểu dữ liệu rằng không thể đọc trạng thái của pullups / pulldowns. Tôi sẽ cố gắng đo chúng
John La Rooy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.