MicroSD can thiệp vào lập trình ISP


7

Tôi có một thẻ nhớ được kết nối với Arduino và tôi không thể lập trình nó qua ISP mà không cần tháo thẻ SD. Có ai biết làm thế nào để ngăn chặn thẻ SD can thiệp vào chương trình ISP không?

Chi tiết:

Đây là đột phá về thẻ nhớ microSD: https://www.adafbean.com/products/254

Tôi đang sử dụng ATMEGA328P ở 3,3V 8 MHz.

Tôi không sử dụng bộ tải khởi động và vì nhiều lý do, tôi không thể sử dụng cổng nối tiếp để lập trình.

Cảm ơn!


1
Bạn đã thử đặt điện trở 10k từ CS lên + 3,3V chưa? CS được gắn với pin nào?
frarugi87

Câu trả lời:


3

Bởi vì thẻ SD là một thiết bị SPI, nó có chung các chân với giao diện ISP. Cách duy nhất để không có thẻ SD can thiệp vào ISP là không kết nối thẻ SD.

Như bạn đã thấy, điều đó có thể đạt được bằng cách loại bỏ thẻ.

Cũng có thể đạt được bằng cách thêm bộ đệm ba trạng thái giữa MCU và thẻ để MCU chỉ kết nối thẻ với bus SPI khi sẵn sàng sử dụng nó - trong hoạt động mặc định, thẻ bị ngắt kết nối.


Sau đó, bạn có cần phải tắt bộ đệm tristate trước khi lập trình MCU không?
mar1980 ngày

Bộ đệm sẽ, nếu bạn nối dây đúng, mặc định tắt khi MCU dừng tích cực cài đặt nó thành bật.
Majenko

Nghe thật tuyệt! Cảm ơn vì tiền hỗ trợ. (Bạn có đề xuất nào về bộ đệm nào tôi nên sử dụng không?)
mar1980

1
@ChrisStratton Có, nhiều (hầu hết) các thiết bị SPI tiếp tục chạy với CS được nâng lên. Không có thiết bị SPI nào khác yêu cầu đồng hồ chạy với CS được nâng lên . Đây là một sự khác biệt cơ bản giữa thẻ SD và các thiết bị SPI thực sự được biết là gây ra sự cố trong lĩnh vực này. Và dĩ nhiên, bạn có sự lờ mờ về những gì tạo nên giao diện SPI của thẻ SD, được thực hiện khác nhau bởi các mfrs khác nhau với nhiều góc cắt mfrs Trung Quốc giá rẻ, v.v. Tôi đã thấy một số thẻ SD thậm chí không bao giờ xác định được chân MISO của chúng. Theo nguyên tắc chung, tôi luôn đặt thẻ SD trên kênh SPI chuyên dụng của riêng họ.
Majenko

1
Đó là chi tiết hữu ích - câu trả lời của bạn sẽ tốt hơn rất nhiều nếu cơ thể thực tế của nó bao gồm lời giải thích này về lý do tại sao bạn khuyên bạn nên xử lý một thẻ SD duy nhất, trái ngược với thiết bị SPI thông thường.
Chris Stratton

1

Tôi đã có cùng một vấn đề chính xác, cũng sử dụng Arduino (Atmega 328P). Tôi có một mô-đun thẻ sd với một bố cục khác, nhưng cũng với một shifter cấp. Mạch của tôi đang chạy ở mức 5V (phù hợp khi sử dụng bộ dịch mức).

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

Để giải quyết vấn đề, tôi chỉ cần cài đặt một điện trở pullup (10k) trên bảng của riêng tôi vào dòng chọn chip của mô-đun sd, giúp giữ cho thẻ sd không được chọn trong khi lập trình MCU. Bây giờ nó hoạt động.

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

Dường như không có pullup tích hợp vào mô-đun. Do đó CS thấp trong quá trình lập trình (không có pullup), thẻ sd nghĩ rằng nó sẽ trả lời các lệnh SPI và do đó cản trở giao tiếp với MCU, đó là lý do tại sao việc lập trình qua ISP không thành công.

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.