Twitter의 업데이트를 따르십시오 : https://twitter.com/mistertechblog/status/1454200499247349760
Pinephone 용 Lora 백 플레이트는 ...
SEMTECH SX1262 LORA 트랜시버 (SPI) 및 안테나
https://www.semtech.com/products/wireless-rf/lora-core/sx1262
Pinephone의 I2C 포트 (Pogo Pins)와 일치하는 I2C 커넥터
https://wiki.pine64.org/index.php/pinephone#pogo_pins
I2C 커넥터를 LORA 트랜시버 (SPI)에 연결하는 I2C-to-SPI Bridge (Attiny84)
https://github.com/zschroeder6212/tiny-i2c-spi
회로도 : https://wiki.pine64.org/wiki/pinedio#pinephone_backplate
SX1262 명령을 전송하고 응답을 읽으려면 버스 해적으로 LORA 백 플레이트를 조사해 봅시다 : http://dangerousprototypes.com/docs/i2c
업데이트 : JF의 우수한 기사를 참조하십시오 ...
"먼저 파네폰의 Lora 백 플레이트를보십시오"
"파인 폰의 Lora 백 플레이트를 깜박이십시오"
"파인 폰의 Lora 백 플레이트 드라이버"
Arduino 소스 코드 : https://github.com/zschroeder6212/tiny-i2c-spi/blob/master/src/main.c
브리지는 I2C 주소 0x28에서 실행됩니다.
#include "USI_TWI_Slave.h"
#define I2C_ADDR 0x28
int main ( void )
{
/* init I2C */
usiTwiSlaveInit ( I2C_ADDR );
/* set received/requested callbacks */
usi_onReceiverPtr = I2C_received ;
usi_onRequestPtr = I2C_requested ;수신 된 첫 바이트가 0x01 일 때 브리지는 데이터를 SPI로 전송합니다.
#define CMD_TRANSMIT 1
#define CMD_CONFIGURE 2
void I2C_received ( uint8_t bytes_recieved )
{
uint8_t command = usiTwiReceiveByte ();
switch ( command )
{
case CMD_TRANSMIT :
{
CS_PORT &= ~( 1 << CS );
for ( int i = 1 ; i < bytes_recieved ; i ++ )
{
uint8_t received_byte = SPI_transfer ( usiTwiReceiveByte ());
SPI_buffer [ received_index ++ ] = received_byte ;브리지가 읽기 명령을 받으면 SPI에서받은 바이트를 반환합니다.
void I2C_requested ()
{
usiTwiTransmitByte ( SPI_buffer [ transmit_index ++ ]);
if ( transmit_index >= BUFFER_SIZE )
{
transmit_index = 0 ;
}
} usi 기능은 여기에 정의되어 있습니다 : https://github.com/zschroeder6212/tiny-i2c-spi/blob/master/src/usi_twi_slave.c
기반 :
http://dangerousprototypes.com/docs/i2c
https://lupyuen.github.io/articles/i2c#appendix-test-bme280-with-bus-pirate
버스 해적을 Lora 백 플레이트에 연결하십시오.
| 버스 해적 핀 | 백 플레이트 핀 |
|---|---|
MOSI | SDA |
CLK | SCL |
5V | USB-5V |
GND | GND |
I2C 모드를 입력하고 전원을 켜십시오.
m
I2C > HW > 400
W
스캔 i2c 버스 :
(1)
I2C 스캔 결과 :
Searching I2C address space. Found devices at:
0x00 (0x00 W) 0x01 (0x00
또는
Searching I2C address space. Found devices at:
0x40(0x20 W) 0x41(0x20
문제 : 스캔하는 동안 버스 해적이 매달려 있습니다. LORA 백 플레이트의 I2C 주소는 0x00이 아닌 0x28이어야합니다. 왜?
i2c 주소 0x28 읽기 :
[0x51 r]
(0x51 = 0x28 * 2 + 1이기 때문에)
결과:
I2C START BIT
WRITE: 0x51 ACK
READ: 0x00
NACK
문제 : 버스 해적은 LORA 백 플레이트에서 I2C 주소 0x28을 읽는 동안 매달려 있습니다. 왜?
i2c 주소 0x20 읽기 :
[0x41 r]
(0x41 = 0x20 * 2 + 1이기 때문에)
위와 같은 문제.
i2c 주소 0x00 읽기 :
[0x01 r]
(0x01 = 0x00 * 2 + 1이기 때문에)
위와 같은 문제.
LORA 백 플레이트의 브레이크 아웃 보드를 조사 할 때도 같은 일이 발생합니다 ...
TODO : I2C 주소를 쓰고 읽으십시오 0x28 레지스터 0x01 :
[0x50 0x01 0x00] [0x51 r]
TODO : I2C 주소 0x00 레지스터 0x01을 쓰고 읽으십니까?
[0x00 0x01 0x00] [0x01 r]
Manjaro Phosh와 함께 파인 폰에서 i2cdetect 로 i2c 버스 3을 스캔합니다.
[manjaro@manjaro-arm ~ ]$ sudo pacman -Syu i2c-tools
[manjaro@manjaro-arm ~ ]$ i2cdetect -l
i2c-0 unknown DesignWare HDMI N/A
i2c-1 unknown mv64xxx_i2c adapter N/A
i2c-2 unknown mv64xxx_i2c adapter N/A
i2c-3 unknown mv64xxx_i2c adapter N/A
i2c-4 unknown i2c-csi N/A
i2c-5 unknown i2c-2-mux (chan_id 0) N/A
[manjaro@manjaro-arm ~ ]$ sudo i2cdetect 3
WARNING ! This program can confuse your I2C bus, cause data loss and worse !
I will probe file /dev/i2c-3.
I will probe address range 0x08-0x77.
Continue ? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- 문제 : i2cdetect LORA 백 플레이트의 I2C 주소 (0x28)를 감지하지 못합니다. 왜?
로라 백 플레이트가 올바른 펌웨어로 플래시 되었습니까?
Attiny84의 I2C-to-spi 브리지 : https://github.com/zschroeder6212/tiny-i2c-spi
I2C 버스 0 ~ 5를 스캔하면 LORA 백 플레이트 (I2C 주소 0x28)가 나타나지 않습니다.
[manjaro@manjaro-arm ~ ]$ sudo i2cdetect 0
WARNING ! This program can confuse your I2C bus, cause data loss and worse !
I will probe file /dev/i2c-0.
I will probe address range 0x08-0x77.
Continue ? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 -- 32 -- -- 35 -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[manjaro@manjaro-arm ~ ]$ sudo i2cdetect 1
WARNING ! This program can confuse your I2C bus, cause data loss and worse !
I will probe file /dev/i2c-1.
I will probe address range 0x08-0x77.
Continue ? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- UU -- -- -- UU -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[manjaro@manjaro-arm ~ ]$ sudo i2cdetect 2
WARNING ! This program can confuse your I2C bus, cause data loss and worse !
I will probe file /dev/i2c-2.
I will probe address range 0x08-0x77.
Continue ? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[manjaro@manjaro-arm ~ ]$ sudo i2cdetect 3
WARNING ! This program can confuse your I2C bus, cause data loss and worse !
I will probe file /dev/i2c-3.
I will probe address range 0x08-0x77.
Continue ? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[manjaro@manjaro-arm ~ ]$ sudo i2cdetect 4
WARNING ! This program can confuse your I2C bus, cause data loss and worse !
I will probe file /dev/i2c-4.
I will probe address range 0x08-0x77.
Continue ? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[manjaro@manjaro-arm ~ ]$ sudo i2cdetect 5
WARNING ! This program can confuse your I2C bus, cause data loss and worse !
I will probe file /dev/i2c-5.
I will probe address range 0x08-0x77.
Continue ? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --(아니오 I2C 버스 2 일 수는 없습니다. 우리는 I2C 포고 핀 전용 버스를 기대하기 때문에)
이것을 다른 Pinephone I2C 장치와 비교하십시오.
https://github.com/jnavarro7/pineye_for_pinephone
https://dev.to/pcvonz/ic--the-pinephone-5090
업데이트 : JF의 우수한 기사를 참조하십시오 ...
"먼저 파네폰의 Lora 백 플레이트를보십시오"
"파인 폰의 Lora 백 플레이트를 깜박이십시오"
"파인 폰의 Lora 백 플레이트 드라이버"