Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Анализ сети 3G | sim5360
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
3dfx
Здравствуйте!
Стоит задача с помощью модуля sim5360 без установленной сим-карты производить анализ сети WCDMA, что будет примерным аналогом команды AT+CNETSCAN у sim900.
То есть модуль должен в режиме UMTS\WCDMA выдавать список операторов, чтобы можно было в последствии "сесть" на один из них.
Была идея использовать команды AT+CRUS и AT+COPS, но вторая команда недоступна без вставленной сим-карты. Применение AT+CNLSA=1 успехов не дало.
Еще была мысль один раз подключить симку, вытащить, а потом запретить проверку на ее наличие при следующих перезагрузках. Подскажите, как это можно реализовать?
Hub
Цитата(3dfx @ Aug 28 2016, 16:02) *
Здравствуйте!
Стоит задача с помощью модуля sim5360 без установленной сим-карты производить анализ сети WCDMA, что будет примерным аналогом команды AT+CNETSCAN у sim900.
То есть модуль должен в режиме UMTS\WCDMA выдавать список операторов, чтобы можно было в последствии "сесть" на один из них.
Была идея использовать команды AT+CRUS и AT+COPS, но вторая команда недоступна без вставленной сим-карты. Применение AT+CNLSA=1 успехов не дало.
Еще была мысль один раз подключить симку, вытащить, а потом запретить проверку на ее наличие при следующих перезагрузках. Подскажите, как это можно реализовать?

Для сетей 2G это можно сделать легко и быстро.
Но без СИМ-карты и в 3G - достаточно проблематично. Задал вопрос производителю, думаю скоро будет ответ.
3dfx
Цитата(Hub @ Aug 29 2016, 13:18) *
Для сетей 2G это можно сделать легко и быстро.
Но без СИМ-карты и в 3G - достаточно проблематично. Задал вопрос производителю, думаю скоро будет ответ.

Спасибо за ответ! Да, в режиме GSM все работает без проблем. Ждем rolleyes.gif
wireless_eltech
У sierrawireless есть 3G модуль HL8518, который может сканировать сеть без симки:
ati
HL8518

OK
at+knetscan=1
OK

+KNETSCAN: 7,18,10,52f020,1e9f,690f,56,653,35,52f010,104,2cd4,39,860,26,52f002,4
ce6,c97,33,58,28,52f010,104,2cd1,32,13,9,52f020,1e9f,3f4c,32,657,35,52f010,104,3
809,31,868,27,52f002,4ce6,5c,31
+KNETSCAN: 7,10638,52f020,1e9f,70b1e3,476,47,41,10687,52f020,1e9f,70f8b4,476,39,
31,10662,52f020,1e9f,708815,476,37,37,10713,52f010,104,40aa201,116,33,35,10762,5
2f010,104,40a2cd7,116,31,31,10737,52f010,104,40aa207,116,31,33,10813,52f099,396e
,17a20dd,501,27,33

Напишите на wirelessСОБАКАeltech.spb.ru - подскажем более подробно
Tweeek
Цитата(wireless_eltech @ Aug 31 2016, 10:48) *
У sierrawireless есть 3G модуль HL8518, который может сканировать сеть без симки:
ati
HL8518

OK
at+knetscan=1
OK

+KNETSCAN: 7,18,10,52f020,1e9f,690f,56,653,35,52f010,104,2cd4,39,860,26,52f002,4
ce6,c97,33,58,28,52f010,104,2cd1,32,13,9,52f020,1e9f,3f4c,32,657,35,52f010,104,3
809,31,868,27,52f002,4ce6,5c,31
+KNETSCAN: 7,10638,52f020,1e9f,70b1e3,476,47,41,10687,52f020,1e9f,70f8b4,476,39,
31,10662,52f020,1e9f,708815,476,37,37,10713,52f010,104,40aa201,116,33,35,10762,5
2f010,104,40a2cd7,116,31,31,10737,52f010,104,40aa207,116,31,33,10813,52f099,396e
,17a20dd,501,27,33

Напишите на wirelessСОБАКАeltech.spb.ru - подскажем более подробно

В общем то любой на Intel это умеет...
3dfx
wireless_eltech, знаю, что есть другие решения, но нужно сделать именно на 5360.
migrator
модуль sim5360 сделан на чипсете Qualcomm MDM6200. Можно залезть в прошивку и подлечить код под свои хотелки.

Это для помощи в работе
CADiLO
Ревес инженеринг не каждый потянет... sm.gif
3dfx
Цитата(migrator @ Aug 31 2016, 18:00) *
модуль sim5360 сделан на чипсете Qualcomm MDM6200. Можно залезть в прошивку и подлечить код под свои хотелки.

Это для помощи в работе

Спасибо! Что ж, если иных вариантов не раздобуду, то лишь это и останется. Буду ковырять.
3dfx
Цитата(Hub @ Aug 29 2016, 13:18) *
Для сетей 2G это можно сделать легко и быстро.
Но без СИМ-карты и в 3G - достаточно проблематично. Задал вопрос производителю, думаю скоро будет ответ.

Ну как, пришел ответ?
3dfx
В продолжение истории: как сделать так, чтобы при подключении модуля к ПК установленная SD-карта отображалась как обычная флешка?
NoDS
Цитата(3dfx @ Sep 20 2016, 00:28) *
В продолжение истории: как сделать так, чтобы при подключении модуля к ПК установленная SD-карта отображалась как обычная флешка?

В стандартной прошивке такая возможность не предусмотрена.
Такая функция есть только в модулях SIM5215/5216.
Hub
Цитата(3dfx @ Sep 3 2016, 10:33) *
Ну как, пришел ответ?

пришел ответ: еще раз, без сим-карты и только в 3G - сложно. Можно получить только Cell ID в необычном формате (4 byte,32 bit).
AT+CRUPSI?
+CRUPSI: 3,66720685,99,10762,69,96907816,303,10788,0,96884614,303,10836,0
OK
AT+CUSI?
+CUSI: 66750685, 99, 10737
OK
Цитата(3dfx @ Sep 20 2016, 00:28) *
В продолжение истории: как сделать так, чтобы при подключении модуля к ПК установленная SD-карта отображалась как обычная флешка?

к сожалению в SIM5360 - никак
только, как уже сказал мой коллега, в SIM5215/16
3dfx
Цитата(Hub @ Sep 22 2016, 16:09) *
пришел ответ: еще раз, без сим-карты и только в 3G - сложно.
AT+CRUPSI?
AT+CUSI?

Вот и я к этому пришел, эти две команды и использую, а результат потом с помощью LUA обрабатываю.
Цитата(Hub @ Sep 22 2016, 16:09) *
к сожалению в SIM5360 - никак
только, как уже сказал мой коллега, в SIM5215/16

Понял, прояснилось, спасибо за ответ!

Назрел еще один насущный вопрос, если никто не против : )
Вот подключаю я LCD-дисплей через программный I2C согласно примеру, однако весь процесс инициализации останавливается на ожидании сигнала подтверждения "ACK" от дисплея. Куда копать? SCL и SDA по всем канонам подвешены через 10k на Vdd
Кстати, использование встроенной же команды AT+CWIIC приводит к ошибке. Разумеется, в этом случае режим I2C предварительно включен в AT+CGFUNC.
Надеюсь на вашу помощь help.gif
3dfx
Всё та же проблема - не инициализируется дисплей. Может, не так подключаю? Помимо SCL и SDA с дисплея идут CSB и RST, помеченные как "Active Low". Правильно ли я делаю, подвесив их через резистор 10к на Vdd? Нужно ли включать RST при запуске?
Hub
Цитата(3dfx @ Oct 23 2016, 01:28) *
Всё та же проблема - не инициализируется дисплей. Может, не так подключаю? Помимо SCL и SDA с дисплея идут CSB и RST, помеченные как "Active Low". Правильно ли я делаю, подвесив их через резистор 10к на Vdd? Нужно ли включать RST при запуске?

давно не заходил на форум, все никак время не находилось.
удалось разобраться?
если нет - схему подключения фстудию, будем разбираться
3dfx
Цитата(Hub @ Nov 3 2016, 11:52) *
давно не заходил на форум, все никак время не находилось.
удалось разобраться?
если нет - схему подключения фстудию, будем разбираться

Дисплей так и не заработал - не приходит ACK, хотя подключено всё 100% правильно, это обсуждалось со знающими людьми, да и схеме подключения в даташите полностью соответствует. Проблема, думаю, именно в коде. Сейчас код примерно такой:
Код
function I2C_out(j) --//I2C Output
    print("~~I2C output '",string.format("0x%X",j),"':\r\n")
    local d, n;
    d=j;
    n=0;
    vmsleep(delay);
    print("1. Sending 8 bits (n = [0,7])\r\n")
    for n = 0,7 do --//send 8 bits
        print("1.",n+1,".1) n = ", n, ", d = ",d, ", d and 0x80 = ",bit.band(d,0x80),". ");
        if(bit.band(d,0x80) == 0x80) then --//get only the MSB
            setHIGH(SDA);--SDA=1; --//If it is 1 then SDA=1
            print("SDA to 1: SDA == ", gpio.getv(SDA),"\r\n");
        else
            setLOW(SDA);--SDA=0; --//If 0 then SDA=0    
            print("SDA to 0: SDA == ", gpio.getv(SDA),"\r\n");            
        end
        
        vmsleep(delay);
        print("1.",n+1,".2) SCL clocks\r\n");
        print("SСL to 0: ")    
        setLOW(SCL);--SCL = 0;
        print("SCL == ",gpio.getv(SCL),"\r\n")
        vmsleep(delay);
        print("SСL to 1: ")    
        setHIGH(SCL);--SCL = 1; --//clock in data
        print("SCL == ",gpio.getv(SCL),"\r\n")
        vmsleep(2*delay);
        
        d = bit.lshift(d,1);--d=(d<<1); --//shift data byte left
        
        print("SСL to 0: ")    
        setLOW(SCL);--SCL = 0;
        print("SCL == ",gpio.getv(SCL),"\r\n")
        vmsleep(delay);
    end;
    
    print("\r\n2.\r\n")
    
    print("SDA to 1: ")
    setHIGH(SDA);--SDA = 1;
    print("SDA == ",gpio.getv(SDA),"\r\n")    
    vmsleep(2*delay);
    
    print("SСL to 1: ")    
    setHIGH(SCL);--SCL = 1; --//clock in data
    print("SCL == ",gpio.getv(SCL),"\r\n")
    vmsleep(2*delay);
    
    print("SСL to 0: ")    
    setLOW(SCL);--SCL = 0;
    print("SCL == ",gpio.getv(SCL),"\r\n")
    vmsleep(delay);
    
    pinToIN(SDA);
    
    --[
    print("3. Wait until ACK:\r\n")
    while(gpio.getv(SDA)==1) do --//wait here until ACK
        print("SСL to 0: ")    
        setLOW(SCL);--SCL = 0;
        print("SCL == ",gpio.getv(SCL),"\r\n")
        vmsleep(delay);
        print("SСL to 1: ")    
        setHIGH(SCL);--SCL = 1;
        print("SCL == ",gpio.getv(SCL),"\r\n")
        vmsleep(delay);
        print("NACK (Sending '", string.format("0x%X",j)," (gpio.getv(SDA) == ",gpio.getv(SDA),"')\r\n");
    end;    
    
    print("!!!!!!!!!!!ACK!!!!!!!!!!!!\r\n");    
    pinToOUT(SDA);
    vmsleep(delay);
    
    setLOW(SCL);--SCL = 0;    
    vmsleep(delay);
end;
--/*****************************************************/
function I2C_Start(void)
    print("~~Start:\r\n")            
    
    print("SСL to 1: ");
    setHIGH(SCL)--SCL = 1;    
    print("SCL == ",gpio.getv(SCL),"\r\n");
    vmsleep(10)
    
    print("SDA to 1: ")
    setHIGH(SDA);--SDA = 1;
    print("SDA == ",gpio.getv(SDA),"\r\n")    
    vmsleep(10)
    
    print("SDA to 0: ")    
    setLOW(SDA);--SDA = 0;
    print("SDA == ",gpio.getv(SDA),"\r\n")
    vmsleep(10)    
    
    print("SСL to 0: ")    
    setLOW(SCL);--SCL = 0;
    print("SCL == ",gpio.getv(SCL),"\r\n")
    vmsleep(10)
    
    print("~~(endstart)\r\n");
end
--/*****************************************************/
function I2C_Stop(void)
    print("~~Stop:\r\n")        

    print("SDA to 0: ")    
    setLOW(SDA);--SDA = 0;
    print("SDA == ",gpio.getv(SDA),"\r\n")
    vmsleep(10)    
    
    print("SСL to 0: ")    
    setLOW(SCL);--SCL = 0;
    print("SCL == ",gpio.getv(SCL),"\r\n")
    vmsleep(10)    
    
    print("SСL to 1: ");
    setHIGH(SCL)--SCL = 1;    
    print("SCL == ",gpio.getv(SCL),"\r\n");
    vmsleep(10)
    
    print("SDA to 1: ")
    setHIGH(SDA);--SDA = 1;
    print("SDA == ",gpio.getv(SDA),"\r\n")    
    vmsleep(10)
    
    print("~~(endstop)\r\n");
end
--/*****************************************************/
function Show(text)
    local n,i;
    local page=0xB0;  --//first page
    for i=0, 13 do --//100 pixels = 12.5 pages
        I2C_Start();
        I2C_out(Slave);
        I2C_out(Comsend);
        I2C_out(page);
        I2C_out(0x10); --//column address Y9:Y6
        I2C_out(0x01); --//column address Y5:Y2
        I2C_Stop();
        I2C_Start();
        I2C_out(Slave);
        I2C_out(Datasend);
        for n=0, 160 do
            I2C_out(text);  --//send data 4 times for grayscaling
            I2C_out(text);
            I2C_out(text);
            I2C_out(text);
            text = text+1;  --//point to next byte of data
            vmsleep(10);
        end
        I2C_Stop();
        page = page+1;  --//move to next page
    end
end
--/****************************************************
--* LCD Initialization *
--*****************************************************/
function init_LCD()
    I2C_Start();
    I2C_out(Slave);
    
    for n = 1, #initTable do
        I2C_out(initTable[n]);
    end
    
    I2C_Stop();
end
--/*****************************************************/
--]]

--/****************************************************
--* MAIN *
--/*****************************************************/
    
Slave = 0x3F; --//slave address
--Comsend = 0x00;
--Datasend = 0x40;
initTable = {
    0x00,    --Comsend
    
    -- Select partial display line (p. 56)
    -- Sets the ratio within range of 16 to 128 (ICON disabled) or 17 to 129 (ICON enabled)
    -- to realize partial display by using the 2-byte instruction
    0x48,    -- 1-st
    0x64,    -- 2-nd : 1/100 duty
    
    -- ADC select (p. 62)
    -- Changes the relationship between RAM column address and segment driver.
    -- The direction of segment driver output pins could be reversed by software.
    -- This makes IC layout flexible in LCD module assembly.
    0xA0,    -- ADC = 0: normal direction (SEG0 -> SEG127)

    -- SHL select (p. 61)
    -- COM output scanning direction is selected by this instruction which determines the LCD driver output status.
    0xC8,    -- SHL = 1: reverse direction (COM127 -> COM0)
    
    -- Set Initial COM0 Register (p. 55)
    -- Sets the initial row (COM) of the LCD panel using the 2-byte instruction.
    -- By using this instruction, it is possible to realize the window moving without the change of display data.
    0x44,    -- 1-st
    0x00,    -- 2-nd scan from COM0

    --    Oscillator ON Start (p. 62)
    0xAB,    -- This instruction enables the built-in oscillator circuit

    -- Select Regulator Resistor (p. 60)
    -- Selects resistance ratio of the internal resistor used in the internal voltage regulator.
    -- See voltage regulator section in power supply circuit
    0x26, -- 1+ (Rb / Ra) = 6.5

    -- Set Electronic Volume Register (p. 60)
    -- Consist of 2-byte Instructions
    -- The 1st instruction set Reference Voltage mode,
    -- the 2nd one updates the contents of reference voltage register.
    -- After second instruction, Reference Voltage mode is released.
    0x81,    -- 1-st *****
    0x18,    -- 2-nd
    -- 0x1C, -- 2-nd

    -- Select LCD bias (p. 60)
    -- Selects LCD bias ratio of the voltage required for driving the LCD.
    0x57,    -- 1/12
    -- 0x56, -- 1/11 ****
    
    -- Select DC-DC Step-up (p. 59)
    -- Selects one of 4 DC-DC step-up to reduce the power consumption by this instruction.
    -- It is very useful to realize the partial display function.
    0x64,    -- 3x times boosting circuit

    0xE3,    -- NOP (p. 64)
    0xE3,    -- NOP (p. 64)
    
    -- Power control (p. 58)
    0x2C,    --    Internal voltage converter circuit is ON
    
    -- Select DC-DC Step-up (p. 59)
    -- Selects one of 4 DC-DC step-up to reduce the power consumption by this instruction.
    -- It is very useful to realize the partial display function.
    0x66,    -- 5x times boosting circuit
    
    0xE3,    -- NOP (p. 64)
    0xE3,    -- NOP (p. 64)
    
    -- Power control (p. 58)
    0x2E,    -- Internal voltage converter circuit is ON
            -- Internal voltage regulator circuit is ON
    
    0xE3,    -- NOP (p. 64)
    0xE3,    -- NOP (p. 64)
    
    -- Power control (p. 58)
    0x2F,    -- Internal voltage converter circuit is ON
            -- Internal voltage regulator circuit is ON
            -- Internal voltage follower circuit is ON
    
    -- Set Bias Power Save Mode (p. 58)
    -- This command is for saving the IC current consumption by Bias Power Saving
    -- After this Instruction is set, Bias function is also working
    0xF3,    -- 1-st
    0x00,    -- 2-nd

    -- Set FRC & PWM mode (p. 65)
    0x96,    -- 3FRC
            -- 60PWM

    -- Set Mode Register (p. 49)
    -- 2-byte instruction to set Mode (EXT) and FR (Frame frequency control), BE (Booster efficiency control).
    -- Booster Efficiency
    -- The ST7528 incorporates software configurable Booster Efficiency Command.
    -- It could be used with Voltage multiplier to get the suitable Vout and Power consumption.
    -- Default setting is Level 2
    0x38,    -- 1-st
    0x75,    -- 2-nd
            -- FR frequency = 70 Hz ±20%
            -- Booster Efficiency Level 2
            -- The Instruction of EXT=1 Mode is available

    -- Set FRC & PWM mode (p. 65)
    0x95,    -- 3FRC
            -- 45PWM
    -- 0x97, ****

    -- 16-level (White Mode ~ Dark Mode) Gray Scale Display with PWM and FRC Methods
    -- (p. 1)

--------------------------------------------------
--start 16-level grayscale settings
--------------------------------------------------
    -- Set Gray Scale Mode & Register (p. 65)
    -- Consists of 2 bytes instruction.
    -- The first byte sets grayscale mode and the second byte updates the contents
    -- of gray scale register without issuing any other instruction.
    0x80, -- Set white mode and 1st frame
    0x00, -- set pulse width

    0x81, -- Set white mode and 2nd frame
    0x00, -- set pulse width
    
    0x82, -- Set white mode and 3rd frame
    0x00, -- set pulse width
    
    0x83, -- Set white mode and 4th frame
    0x00, -- set pulse width
--------------------------------------------------
    0x84,
    0x06,
    0x85,
    0x06,
    0x86,
    0x06,
    0x87,
    0x06,
    0x88,
    0x0B,
    0x89,
    0x0B,
    0x8A,
    0x0B,
    0x8B,
    0x0B,
    0x8C,
    0x10,
    0x8D,
    0x10,
    0x8E,
    0x10,
    0x8F,
    0x10,
    0x90,
    0x15,
    0x91,
    0x15,
    0x92,
    0x15,
    0x93,
    0x15,
    0x94,
    0x1A,
    0x95,
    0x1A,
    0x96,
    0x1A,
    0x97,
    0x1A,
    0x98,
    0x1E,
    0x99,
    0x1E,
    0x9A,
    0x1E,
    0x9B,
    0x1E,
    0x9C,
    0x23,
    0x9D,
    0x23,
    0x9E,
    0x23,
    0x9F,
    0x23,
    0xA0,
    0x27,
    0xA1,
    0x27,
    0xA2,
    0x27,
    0xA3,
    0x27,
    0xA4,
    0x2B,
    0xA5,
    0x2B,
    0xA6,
    0x2B,
    0xA7,
    0x2B,
    0xA8,
    0x2F,
    0xA9,
    0x2F,
    0xAA,
    0x2F,
    0xAB,
    0x2F,
    0xAC,
    0x32,
    0xAD,
    0x32,
    0xAE,
    0x32,
    0xAF,
    0x32,
    0xB0,
    0x35,
    0xB1,
    0x35,
    0xB2,
    0x35,
    0xB3,
    0x35,
    0xB4,
    0x38,
    0xB5,
    0x38,
    0xB6,
    0x38,
    0xB7,
    0x38,
    0xB8,
    0x3A,
    0xB9,
    0x3A,
    0xBA,
    0x3A,
    0xBB,
    0x3A,
--------------------------------------------------
    0xBC, -- Set Dark mode and 1st frame
    0x3C, -- set pulse width

    0xBD, -- Set Dark mode and 2nd frame
    0x3C, -- set pulse width

    0xBE, -- Set Dark mode and 3rd frame
    0x3C, -- set pulse width

    0xBF, -- Set Dark mode and 4th frame
    0x3C, -- set pulse width
--------------------------------------------------
-- end grayscale settings
--------------------------------------------------

    -- Set Mode Register (p. 49)
    -- 2-byte instruction to set Mode (EXT) and FR (Frame frequency control), BE (Booster efficiency control).
    -- Booster Efficiency
    -- The ST7528 incorporates software configurable Booster Efficiency Command.
    -- It could be used with Voltage multiplier to get the suitable Vout and Power consumption.
    -- Default setting is Level 2
    0x38,    -- 1-st
    0x74,    -- 2-nd
            -- FR frequency = 70 Hz ±20%
            -- Booster Efficiency Level 2
            -- The Instruction of EXT=0 Mode is available

    0xAF    -- Turns the display ON
};
delay = 10
    
    pinToOUT(SCL)
    pinToOUT(SDA)
    pinToOUT(RST)
    pinToOUT(CSB)

    print("CSB to 0: ")    
    setLOW(CSB)
    print("CSB == ",gpio.getv(CSB),"\r\n")
    vmsleep(5);
    
    print("RST to 0: ")    
    setLOW(RST)
    print("RST == ",gpio.getv(RST),"\r\n")
    vmsleep(100);
    
    print("RST to 1: ")    
    setHIGH(RST)
    print("RST == ",gpio.getv(RST),"\r\n")
    vmsleep(100);

    init_LCD();

--The end
3dfx
С ногами RST и CSB разобрался. RST сначала опускаем в ноль, CSB тоже. Потом выдерживаем паузу, и возвращаем RST в 1.
Впрочем, проблему это не решило. Пытался и ногу SDA ставить в режим входа непосредственно перед ожиданием ACK, и с адресом экспериментировать, и с задержками - тщетно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.