PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 08-04-2010, 03:14 PM   #46
hopeman
Đệ tử 6 túi
 
hopeman's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Wink

Trích:
Nguyên văn bởi tahi View Post
mcp 2551 theo em nghĩ chỉ là con vi sai. Khi gửi tín hiệu đi thì nó tùy vào đường RXD là mức cao hay mức thấp để điều khiển sai khác lối ra CANL và CANH (2 trạng thái dominant và recessive)
con này dùng 5v mà thằng dsPIC hay dùng 3v3. vậy kết nối trực tiếp MCP2551 và dsPIC33f liệu có vấn đề gì không ?
Làm thế nào để test CAN bus. Em nối chân TX và RX vào nhau (không dùng mcp2551 có được không?) Có thiết bị nào thu nhận can bus chuẩn (để test thằng mình đang phát triển) mà rẻ không ?
không vấn đề gì đâu bạn ạ, nếu bạn sợ nhiễu thì có thể kéo 2 chân TX va RX lên 5V bằng 2 trở 10k là ok, ds33f nhận mức logi 5v ok
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com
hopeman vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-05-2010, 06:48 PM   #47
quocviet233
Nhập môn đệ tử
 
Tham gia ngày: Sep 2008
Bài gửi: 7
:
CAN với PIC30f4012

Em có viết giao thức CAN để truyền thông 2 chip pic30f4012, em viết dùng Mikroc for Dspic. chip thứ nhất em đọc tín hiệu từ cảm biến LM35, chíip thứ 2 nhận tín hiệu này qua mạng truyền thông CAN và hiển thị lên màn LCD (16x2), sau khi dich và nạp xong em không thấy có tín hiệu gì được truyền thông cả. Rất mong các anh chị giúp đỡ.
sau đây là code của 2 chíp
Chíp 1 ( nhận tín hiệu từ cảm biến LM35)
void main()
{
unsigned char temperature, data[8];
unsigned short init, send, dt, len, read;
char SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, txt[4];
unsigned int temp;
unsigned long mV;
long id, mask;

TRISDbits.TRISD0=1; // PORTD0 are inputs
TRISF = 0x04; // RB2 is output, RB3 is input
//ADCON1 = 0x80;
// CAN BUS Timing Parameters
//
SJW= 1;
BRP = 1;
Phase_Seg1 = 6;
Phase_Seg2 = 7;
BRP = 1;
Prop_Seg = 6;

init = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used
CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize
CAN_CONFIG_XTD_MSG &
CAN_CONFIG_DBL_BUFFER_ON &
CAN_CONFIG_MATCH_MSG_TYPE &
CAN_CONFIG_LINE_FILTER_OFF;
send = CAN_TX_PRIORITY_0 & // Form value to be used
CAN_TX_XTD_FRAME & // with CAN1Write
CAN_TX_NO_RTR_FRAME;
read = 0;
//
// Initialise CAN module
//
CAN1Initialize(SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, init);
//
//Set CAN CONFIG mode
//
CAN1SetOperationMode(CAN_MODE_CONFIG, 0xFF);
mask = -1;
//
//Set all MASK1 bitstol's
//
CAN1SetMask(CAN_MASK_B1, mask, CAN_CONFIG_XTD_MSG);
//
//Set all MASK2 bitstol's
//
CAN1SetMask(CAN_MASK_B2, mask, CAN_CONFIG_XTD_MSG);
//
//Set id of filter B1_F1 to 3
//
CAN1SetFilter(CAN_FILTER_B2_F3,500,CAN_CONFIG_XTD_ MSG);
//
// Set CAN module to NORMAL mode
//
CAN1SetOperationMode(CAN_MODE_NORMAL, 0xFF);

//
// Program loop. Read the temperature from analog temperature
// sensor

for(;

// Endless loop

{
//
//Walt until a request is received
//
dt = 0;
while(!dt) dt = CAN1Read(&id, data, &len, &read);
if(id == 500 && data[0] == 'T')
{
//
// Now read the temperature
//
temp = Adc_Read(0); // Read temp
mV = (unsigned long)temp * 5000 /1024; // in mV
temperature = mV/10; // in degrees C
//
// send the temperature to Nodeisplay
//
data[0] = temperature;
id = 3; // Identifier
CAN1Write(id, data, 1, send); // send temperature
}
}
}
quocviet233 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-05-2010, 06:51 PM   #48
quocviet233
Nhập môn đệ tử
 
Tham gia ngày: Sep 2008
Bài gửi: 7
:
Pic 30f4012 và CAN ( tiếp)

CHíp thứ 2 nhận tín hiệu hiển thị LCD:
void main()
{
unsigned char temperature, data[8];
unsigned short init, send, dt, len, CANread;
char SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, txt[4];
long id, mask;
TRISB = 0;
TRISC = 0;
TRISF = 0x04;
SJW = 1;
BRP = 1;
Phase_Seg1 = 6;
Phase_Seg2 = 7;
Prop_Seg = 6;
init = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used
CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize
CAN_CONFIG_XTD_MSG &
CAN_CONFIG_DBL_BUFFER_ON &
CAN_CONFIG_MATCH_MSG_TYPE &
CAN_CONFIG_LINE_FILTER_OFF;
send = CAN_TX_PRIORITY_0 & // Form value to be used
CAN_TX_XTD_FRAME & // with CAN1Write
CAN_TX_NO_RTR_FRAME;
CAN1read = 0;
CAN1SetMask(CAN_MASK_B1, mask, CAN_CONFIG_XTD_MSG);
CAN1SetMask(CAN_MASK_B2, mask, CAN_CONFIG_XTD_MSG);
CAN1SetFilter(CAN_FILTER_B2_F3,3,CAN_CONFIG_XTD_MS G);
CAN1SetOperationMode(CAN_MODE_NORMAL, 0xFF);
Lcd_Custom_Config(&PORTB, 5,4,3,2,1,0, &PORTC, 13);
Lcd_Custom_Cmd(LCD_CLEAR);
Lcd_Custom_Out(1,1 ,"CAN BUS");
Delay_ms(1000);
for(; // Endless loop
{
Lcd_Custom_Cmd(LCD_CLEAR); //Clear LCD
Lcd_Custom_Out(1,1, "Temp = "); // Display "Temp = "
//
// Send a message to Node:COLLECTOR and ask for data
//
data[0] = 'T'; // Data to be sent
id = 500; // Identifier
CAN1Write(id, data, 1, send); // send T
//
// Get temperature from node:COLLECT
//
dt = 0;
while(!dt) dt = CAN1Read(&id, data, &len, &CANread);
if(id == 3)
{
temperature = data[0];
ByteToStr(temperature,txt); // Convert to string
Lcd_Custom_Out(1,8,txt); // Output to LCD
Delay_ms(1000); //Wait 1 second
}
}
}
quocviet233 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-05-2010, 08:42 AM   #49
vjh_euro
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 1
:
Em là sinh viên năm 3 ngành điều khiển tự động. em đang làm đề tài kết thúc môn MẠNG CÔNG NGHIỆP. em muốn hỏi các anh chị ai có tài liệu hay kinh nghiệm thực tế nào về ứng dụng mạng CANBUS trong công nghiệp hay trên Oto thì có thể giúp em được không ạ.Em đang cần gấp. Rất mong được giúp đỡ. Anh chị nào nhiệt tình giúp em xin vui lòng gửi mail cho em : 0751050066@sv.hcmutrans.edu.vn.
Em xin chân thành cảm ơn.
vjh_euro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-07-2010, 12:08 PM   #50
lephuongnhung
Nhập môn đệ tử
 
Tham gia ngày: Jul 2010
Bài gửi: 1
:
Cần tài liệu về ứng dụng CAN OPEN trên tàu thuỷ

Trích:
Nguyên văn bởi falleaf View Post
CAN đã được làm từ rất lâu và hiện nay các khách hàng của R&P đang phát triển nhiều sản phẩm trên mạng CAN rồi.

Về vấn đề tổng hợp các chuẩn, các hãng đã thực hiện từ rất lâu, nhưng nhu cầu này chưa xuất hiện nhiều ở VN. Sử dụng CAN thường dùng trong oto, thang máy, nhà thông minh,... Hiện R&P chưa có khách hàng sử dụng nó trong oto, có lẽ mảng thị trường này R&P còn yếu, đang thâm nhập dần, nhưng các mảng khác đã có khách hàng phát triển và ứng dụng.

Hy vọng là nếu anh muốn ứng dụng nó trong tàu thủy, thì anh cần có một bài toán cụ thể. Nếu nói "làm được không" thì hiển nhiên là làm được và làm được lâu rồi. Vấn đề là anh ứng dụng nó vào cái gì, và trong điều kiện như thế nào, anh cần nó ở mức độ như thế nào.

Em thấy hiện nay anh đang trao đổi về khá nhiều chuẩn: Ethernet, USB, CAN, RS485,... có lẽ lúc này anh đang muốn tìm ra một "chuẩn" nào đó để phát triển.

Microchip mạnh ở các mảng Ethernet, USB, CAN, còn RS485 thì MCHP không làm driver chip, vì các chip này TI mạnh hơn và có truyền thống lâu đời hơn, MCHP không muốn cạnh tranh vào những thị trường quá phổ biến và khó chen chân với những cây đại thụ. Chưa biết sau này có không, nhưng hiện giờ là chưa có.

Tất cả những gì ta trao đổi ở đây đều là mức độ Physical Layer, anh yên tâm, ở VN làm được hết, vấn đề là anh muốn tự làm thì anh cần nghiên cứu các tutorial của picvietnam, nếu anh cần đặt hàng cái này, chỉ cần hô một tiếng có hàng trăm người làm được cái này cho anh. "Không nên nghi ngờ về năng lực thiết kế ở VN".

Lưu ý, luồng này em viết từ năm 2007, tới tận 2009 anh mới hỏi "có làm được không", thì có vẻ là hơi "quá muộn".

Chúc vui
Chào anh!

Em đang cần - rất cần các tài liệu về ứng dụng CAN OPEN trên tàu thuỷ mà ko có ở đâu cả?
Nếu có anh cung cấp lên diễn đàn hoặc làm ơn gửi mail cho em theo địa chỉ lephuongnhung@caodangvtc.edu.vn nhé.
Cảm ơn anh rất nhiều.
lephuongnhung vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-08-2010, 03:50 PM   #51
tehin2005
Nhập môn đệ tử
 
Tham gia ngày: Oct 2009
Bài gửi: 1
:
Exclamation Can

Hi Các Đại Ca!
Mình đã làm canbus của PIC 18, hai node giao tiếp thì chạy ok! Nếu mình dùng nhiều node thì nó lại stop can. Mình mới tìm cách dùng MASK và FILTER để lọc id thì nó chạy có lúc ok, có lúc ko ok? Đại ca nào hiểu biết nhiều về vấn đề này xin cho minh một lời tư vấn!
tehin2005!
Kính chào!
tehin2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2010, 02:06 PM   #52
xtravel
Nhập môn đệ tử
 
Tham gia ngày: Aug 2010
Nơi Cư Ngụ: hcm city
Bài gửi: 7
:
Send a message via Yahoo to xtravel
chào anh chị,em là người mới tìm hiểu về CAN. Cho em hỏi là những dòng PIC nào có thế dùng để kết nối mạng CAN?
xtravel vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-10-2010, 06:07 PM   #53
mbuiquang
Nhập môn đệ tử
 
mbuiquang's Avatar
 
Tham gia ngày: Aug 2008
Bài gửi: 3
:
Send a message via Yahoo to mbuiquang
Chào các thành viên trong diễn đàn!
Hiện tại em đang tham gia nhóm tìm hiểu về giao tiếp CAN.
Bọn em sử dụng chip PIC8F4680 , có tích hợp sẵn modul giao tiếp CAN, trên kit EasyPIC.
Với 2 kit EasyPIC, bọn em lập trình giao tiếp truyền từ kit 1 sang kit 2, và hiển thị DEBUG lên máy tính qua RS232.
Vì chưa tìm được 2 con MPC2551 để tạo BUS CAN chuẩn nên em nối chéo chân của 2 bộ CAN với nhau : CAN_TX(1) -> CAN_RX(2) , CAN_RX(1) -> CAN_TX(2)
Nhưng hiện tại 2 modul này vẫn chưa giao tiếp được với nhau. Từ màn hình DEBUG thấy được: đã có dữ liệu trên cả 3 buffer truyền nhưng không thể truyền tiếp được, còn bên nhận thì không có data trong buffer ( dù đã cấu hình MASK để nhận tất cả các gói tin).
Hiện bọn em đang bế tắc, không có cách nào test được.
Proteus 7.6 không thể mô phỏng CAN, đo tín hiệu trên Oscilloscope của 2 chân CAN_RX và CAN_TX không thấy có tín hiệu truyền tin.
Các cao thủ đã ai làm được giao tiếp này, hay có giải pháp nào để kiểm tra thì bày cho em với.
-------------------------------------------------------------
Code là ví dụ mẫu EX_CAN_CCS_A.C của CCS
và kết quả thu được là hình ảnh đính kèm
Hình Kèm Theo
File Type: jpg can.jpg (58.3 KB, 29 lần tải)
__________________
-----------------------------------------------------
Bùi Quang Minh
SET11 C51, Hanoi University of Science and Technology
ESRC Lab - 618, 6th floor, Ta Quang Buu Library - HUST
AT91SAM9260 Deverlopers Group: at91sam9260developer@googlegroups.com

thay đổi nội dung bởi: mbuiquang, 23-10-2010 lúc 07:24 PM.
mbuiquang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-10-2010, 06:59 PM   #54
mbuiquang
Nhập môn đệ tử
 
mbuiquang's Avatar
 
Tham gia ngày: Aug 2008
Bài gửi: 3
:
Send a message via Yahoo to mbuiquang
Talking

Bọn em đã tìm ra lỗi rồi, do con MPC2551 die.
Hiện tại 2 chip đã giao tiếp với nhau tốt.
__________________
-----------------------------------------------------
Bùi Quang Minh
SET11 C51, Hanoi University of Science and Technology
ESRC Lab - 618, 6th floor, Ta Quang Buu Library - HUST
AT91SAM9260 Deverlopers Group: at91sam9260developer@googlegroups.com
mbuiquang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2011, 01:00 AM   #55
lop06d2
Đệ tử 1 túi
 
Tham gia ngày: Aug 2010
Bài gửi: 13
:
chương trình của quocviet233
void main()
{
unsigned char temperature, data[8];
unsigned short init, send, dt, len, CANread;
char SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, txt[4];
long id, mask;
TRISB = 0;
TRISC = 0;
TRISF = 0x04;
SJW = 1;
BRP = 1;
Phase_Seg1 = 6;
Phase_Seg2 = 7;
Prop_Seg = 6;
init = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used
CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize
CAN_CONFIG_XTD_MSG &
CAN_CONFIG_DBL_BUFFER_ON &
CAN_CONFIG_MATCH_MSG_TYPE &
CAN_CONFIG_LINE_FILTER_OFF;
send = CAN_TX_PRIORITY_0 & // Form value to be used
CAN_TX_XTD_FRAME & // with CAN1Write
CAN_TX_NO_RTR_FRAME;
CAN1read = 0;
CAN1SetMask(CAN_MASK_B1, mask, CAN_CONFIG_XTD_MSG);
CAN1SetMask(CAN_MASK_B2, mask, CAN_CONFIG_XTD_MSG);
CAN1SetFilter(CAN_FILTER_B2_F3,3,CAN_CONFIG_XTD_MS G);
CAN1SetOperationMode(CAN_MODE_NORMAL, 0xFF);
Lcd_Custom_Config(&PORTB, 5,4,3,2,1,0, &PORTC, 13);
Lcd_Custom_Cmd(LCD_CLEAR);
Lcd_Custom_Out(1,1 ,"CAN BUS");
Delay_ms(1000);
for(; // Endless loop
{
Lcd_Custom_Cmd(LCD_CLEAR); //Clear LCD
Lcd_Custom_Out(1,1, "Temp = "); // Display "Temp = "
//
// Send a message to Node:COLLECTOR and ask for data
//
data[0] = 'T'; // Data to be sent
id = 500; // Identifier
CAN1Write(id, data, 1, send); // send T
//
// Get temperature from node:COLLECT
//
dt = 0;
while(!dt) dt = CAN1Read(&id, data, &len, &CANread);
if(id == 3)
{
temperature = data[0];
ByteToStr(temperature,txt); // Convert to string
Lcd_Custom_Out(1,8,txt); // Output to LCD
Delay_ms(1000); //Wait 1 second
}
}
}
mình đưa vào microxin viết cho con PIC 18F4580 nó có báo lỗi ko dịch được phai help anh em nào thành thạo chỉ cho mình lỗi sai ở đâu ko?
cám ơn trước
lop06d2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2011, 02:02 AM   #56
lop06d2
Đệ tử 1 túi
 
Tham gia ngày: Aug 2010
Bài gửi: 13
:
PROTECH có mô phỏng được giao tiếp can dùng MCP 2551 và PIC 18F4580 ko anh em? nếu có chỉ cho mình vơi?
lop06d2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2011, 03:07 AM   #57
khoai tây
Nhập môn đệ tử
 
khoai tây's Avatar
 
Tham gia ngày: Feb 2011
Bài gửi: 2
:
PBUS là cái gì ấy nhỉ???

Biết là các anh chị đang bàn về CAN, nhưng mà cho em hỏi một chút được không ạ?
Có ai biết cái PBUS protocol là cái gì không ạ, em thấy nó dùng trong cả truyền rs485 nhưng mà chỉ dùng 1-wire là sao ạ? Có thể dùng max485 hay SN75176 để truyền tín hiệu được không?
Ai có sơ đồ về cách mắc loại này thì share cho mọi người biết với!
Thanks mọi người nhiều
__________________
***
Nhân sinh tịch mịch, hà tất đa phiền ưu
Thiên địa bất nhân, dĩ vạn vật vi sô cẩu
--------------------------------------
khoai tây vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-05-2011, 12:56 AM   #58
lop06d2
Đệ tử 1 túi
 
Tham gia ngày: Aug 2010
Bài gửi: 13
:
cuối cùng thì cũng giao tiếp được hai nốt của CANBUS rùi:
lop06d2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-05-2011, 12:56 AM   #59
lop06d2
Đệ tử 1 túi
 
Tham gia ngày: Aug 2010
Bài gửi: 13
:
hiển thị nhiệt độ ra LCD
lop06d2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2011, 08:19 AM   #60
lop06d2
Đệ tử 1 túi
 
Tham gia ngày: Aug 2010
Bài gửi: 13
:
mình đã giao tiếp thành công 3 nôt rùi : cập nhật nhiệt độ ở 2 nơi hiện thị lên LCD ; bằng CCS thấy cũng khá ổn định
lop06d2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 01:05 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam