𝐖𝐡𝐚𝐭 𝐝𝐨𝐞𝐬 𝐂𝐀𝐍 𝐟𝐫𝐚𝐦𝐞 𝐜𝐨𝐧𝐬𝐢𝐬𝐭 𝐨𝐟 ?𝐂𝐀𝐍 𝐟𝐫𝐚𝐦𝐞𝐬 ?𝐛𝐮𝐬 𝐞𝐫𝐫𝐨𝐫𝐬?𝐞𝐫𝐫𝐨𝐫 𝐬𝐭𝐚𝐭𝐞𝐬?
--بص يا حسن هو الفريم بتاع ال can بيتكون من ايه ؟ او ايه ال fields اللى فيه ؟
--ايه هي انواع ال CAN frame ؟
--ايه الفرق بين ال Remote frame وال data frame ؟
--يعني ايه extended CAN و standard CAN ؟
--يعني ايه Bit stuffing ولزمتها ايه ؟
--يعني ايه TEC , REC وامتي بيزيدوا او يقلوا ؟
--اذاي اعمل mountroring لل error states?
--يعني ايه Active error ؟ يعني ايه passive error ؟ ويعني ايه bus off ؟
--يعني ايه overload frame ؟ واذاي افرق بينه وبين ال error frame او تحديدا ال Active error ؟
--ايه هي انواع ال CAN bus errors ؟
--يعني ايه bit error ؟ ACK error ؟ Stuffing error ؟CRC error ؟
.
--ويعني ايه ؟ واذاي ؟ وليه ؟ وحاجات كتير اوي يا حسن هنعرفها سوا … كباية اللبن علي قهوة بتاعتك وحتت مكرونه بشاميل وادعيلي اخلص جيش بسرعه ويلا نبدأ يا حسن …
--من اول هنا عايزك تركز جامد جدا يا حسن ولما اقولك بص للصوره اللى تحت تبص
--عايزك تركز في حته بقى يا حسن ال CAN ال RX بتاعته هي وال TX اللى داخلين لل CAN controller اللى في الميكرو هو مبيفهمش غير digital ولكن ال bus زي مقولنا القيم اللى تنزل عليه بتتحول الاول من digital ل analog اللى بيفهموا بقى ال can bus واللي بيكون متمثل في CAN high و can low …مين بقى اللى هيعمل التحويلة دي ؟
--الحاج transceiver هو اللى بيبعمل كدا يا حسن هياخد من ال RX وال TX بتوع ال can واللي طالعين من ال micro واللي هما digital ويحولهم ل analog متمثلين في can high و can low وطبعا بيعمكس العمليه لما بيكون بيستقبل …. السيجنال وهي في ال digital اسمها zero و one لكن بعد م ال transceiver بيحولها عشان تكون مناسبه لل can bus بيكون اسمها resistive , dominant.
/**************/
𝐖𝐡𝐚𝐭 𝐂𝐀𝐍 𝐝𝐚𝐭𝐚 𝐟𝐫𝐚𝐦𝐞 𝐜𝐨𝐧𝐬𝐢𝐬𝐭 𝐨𝐟 ?
1-Start of frame
--A single dominant bit to mark the beginning of a data frame.
--All nodes have to synchronize to the leading edge caused by this field
--اول حاجه في ال data frame هي ال start of frame ودي one bit واللي من خلالها بينزل ال bus من high ل low.
--واول متحصل كل ال ECUs تبتدي تسمع ال bus وت synchronous بسرعة ال bit rate.
.
2-Arbitration
--The RTR bit is the remote transmission request and must be 0 in a data frame.
--The SRR bit is the substitute remote request and is recessive .
--The IDE field indicates whether the identifier is extended and should be recessive in
the extended format.
--The extended format also contains the 18-bit extended identifier
--تاني filed هو ال arbitration filed وده بيتكون من حاجتين (ID bits + RTR)
1-ال ID bits ودي ال bits اللى بتمثل ال identifier اللى قولنا عليه بيتبعت مع ال message وده زي مقولنا بيكون 11 bits لأو انت standard CAN لكن لو كنت Extended فهيكون ال ID 29 bits وطبعا انت بتقدر تحدد انت عايز مين من ال configurations.
2-ال RTR ودي اللى هي Remote Transmitter Request .. ودي bit واحده لو انت عايز تبعت remote frame مش data frame فبترفع ال bit دي ب 1 مش كدا وهيكون data frame فهتكون ب zero عادي.
.
3-Control field
--The first bit is IDE bit for the standard format but is used as reserved bit r1 in extended format.
--r0 is reserved bit.
--DLC3…DLC0 stands for data length and can be from 0000 (0) to 1000 (
--ال field اللى بعده وهو ال control field فيه 3 حاجات
1--اول bit هي ال IDE وهي انت هتشتغل standard ولا extended .. فهو لو ب zero يبقي هشتغل stadared ID وده اللى هو 11 bit بس لكن لو هتشتغل Extended واللي هو 29 bit فهتكون ال bit دي ب 1.
--اذاي اعمل generation ل standard frame و لل extended frame ؟
.
--ال standard frame وده اللى قولنا فيه ان ال id بيكون 11 bit وعشان تحدده لازم تخلي ال srr ب 1 وال ide 0
--ولكن في ال extended هتلاقي ال ide ب 1 وال srr ب 1 برضه
2--تاني bit وهي ال r0 ودي reserved bit ودي محجوزة مبنجيش ناحيتها.
.
3--اخر حاجه وهي ال DLC ودول 4 bits وبتحدد فيهم انت هتبعت داتا قد ايه من الاخر بتكتب فيها Data length بال byte يعني ان كتبت فيه 0 يبقي مش هتبعت داتا واكبر رقم ينفع تبعته في ال data field هو 8 byte فهتيجي كاتب في ال DLC ده هتكتب 8 وده يعني 8 byte داتا.
.
4-Data field
--رابع filed وهو ال data fild وده اللى الداتا الفعليه بتاعتك بتتحط فيه من 0 ل 8 Bytes وطبعا لو هو remote frame فقولنا فوق ال data هتكون بصفر لكن لو data frame فهيتحط فيها عدد ال bytes بقى اللى انت عايز تبعتها.
.
5-CRC failed
--It contains the 16-bit CRC sequence and a CRC delimiter.
--The CRC delimiter is a single recessive bit.
--ال CRC زي مشرحتها فوق وهي ال Cyclic Redundancy Check وهي ميكانيزم يتأكد بيه ال receiver ان ال Sender بعت الداتا صح وإن الداتا محصلهاش اي noise بوظها وهي علي ال bus ودي بتكون 15 bits وال bit ال 16 بتكون delimiter ب 1 بتقفل علي ال 15 bits دول…وشارحها البوست اللى فات بالتفصيل.
.
6-ACK
-Consists of two bits
--The first bit is the acknowledgement bit.
--This bit is set to recessive by the transmitter, but will be reset to dominant if a receiver acknowledges the
data frame.
--The second bit is the ACK delimiter and is recessive.
--
7-End Of Frame
EOF : 7 bit recessive
ITM Field After frame there is IFS Inter frame Space is at least 3 recessive bits
--نيجي لاخر faild في ال can frame وهو ال End Of frame وده بيكون عبارة عن 7 bit وبيكونوا recisive او ones
--كدا ال frame خلص اه بس بيرجعوا بيكون فيه حاجه اسمها ITS (inter frame space ( ودي بتكون 3 ones بنفصل بيهم بين ال frames وبعضها ويكأنها gape كدا.
.
/**************/
𝐖𝐡𝐚𝐭 𝐢𝐬 𝐁𝐢𝐭 𝐬𝐭𝐮𝐟𝐟𝐢𝐧𝐠?
Insertion of a bit of opposite polarity after five consecutive bit of the same polarity if that frame has more than five consecutive bits of same polarity is called bit stuffing.
--while on the receiver side these inserted bits are removed and receive the actual transmitted frame and it is called bit de-stuffing.
--As per CAN standard, more than 5 consecutive bits of the same polarity in CAN frame between the start of the Frame(SOF) to CRC field is considered as a faulty frame on CAN Bus and it signaled as stuff error on CAN line.
----ال CAN بيعمل حركه كدا عشان يتأكد انه ماشي تمام وهو ان كل 5 bit ورا بعض من الداتا بيتبعتوا ان كان ليهم نفس القيمه يعني مثلا خمس ones ورا بعض او خمسه zeros ورا بعض بيجي جاي في ال bit السادسة ويجي فاصل ب bit مختلفه عن الخمسه اللى ورا بعض واللي زي بعض دول …يعني لو خمسه ones ورا بعض يجي جاي ال CAN حاطت ال bit السادسه zero ولو كانوا خمسه zeros ورا بعض يجي جاي ضايف one في ال bits السادسه عشان يفصل
--تقولي طب مهو كدا غير في قيم الداتا ؟
--اقولك لا هو الزياده تمت عند ال transceiver لكن عند ال receiver هو بيتشك خمسه bits مع بعض لو ليهم نفس الاولويه بيجي مفلتر ال bit السادسه واللي هو متأكد انها لازم تكون بقيمه عكس الخمسه اللى فاتوا لانه عارف ان ال bit السادسه دي مش من الداتا الحقيقيه ولكن ال transceiver هو اللى ضافها من عنده.
--بس خد بالك يا حسن وركز جامد
--In a CAN frame stuffing concept will not apply on CRC delimiter, ACK and EOF fields because these fields have fixed size.
/**************/
𝐖𝐡𝐚𝐭 𝐚𝐫𝐞 𝐭𝐡𝐞 𝐭𝐲𝐩𝐞𝐬 𝐨𝐟 𝐂𝐀𝐍 𝐟𝐫𝐚𝐦𝐞𝐬 ?
--ال CAN frame بيتكون من كام field ؟ وايه هما ؟
1-Data frame
2-Remote frame
3-Error frame
4-Overload frame
/**************/
--اولا ال data frame
1-Data frame
--A data frame consists of seven fields: start-of-frame, arbitration, control, data, CRC, ACK, and end-of-frame.
/*************/
2-Remote frame
𝐖𝐡𝐚𝐭 𝐢𝐬 𝐚 𝐑𝐞𝐦𝐨𝐭𝐞 𝐟𝐫𝐚𝐦𝐞 ?
--Used by a node to request other nodes to send a certain type of messages
--Has six fields
--These fields are identical to those of a data frame with the exception that the RTR bit in the arbitration field is recessive in the remote frame.
--اعتبر ان العربية فيها اتنين ECUs واحده دي اللى بتجيب الداتا من بقيت ال ECUs ودورها انها تعرضها علي ال Lcd بتاعت العربية مثلا وال ECU التانيه دورها انها تقيس مثلا درجة حرارة الزيت وتبعته لل ECU الاولي عشان تعرضه هي علي ال LCD
--فال ECU 1 هتبعت حاجه اسمها remote frame مبيكونش فيه داتا عايز يبعتها هو بس بيبعت ال id اللى المفروض اللى ال ECU 2 بتبعت بيه وهتيجي ECU 2 هتستقبل وتتشك علي ال id هتلاقي ان اه ده ال id اللى هي بتبعت عليه فهتيجي عامله ack ل ECU 1 بتعرفها انها موجوده وتيجي رده عليها بالداتا اللى معاها واللي هي درجة حرارة الزيت…. فهمت يا حسن ؟
--ال remote frame هو ان ECU بتبعت frame فيه ال id بتاعت البورده اللى هي عايزه منها داتا ويكأن ECU 1 اللى بعته ال frame ده بتقول يجماااااااااعه اي حد بيبعت بال id ده يبعت الداتا اللى عنده بسرعععععععععه
سامعك يا حسن والله وانت بتقولي بس هي البورده التانيه بتميز اذاي ان ده data frame ولا remote frame ؟
--جدع يا حسن احييك والله انك مركز معايا … هي ليها حاجه بتميز الاتنين دول عن بعض بس اصبر هقولها تحت شويه وهنجاوب علي السؤال ده بالتفصيل … اتكي علي الصبر يا ابوعلي.
/**************/
3-Error frame
𝐖𝐡𝐚𝐭 𝐢𝐬 𝐚𝐧 𝐄𝐫𝐫𝐨𝐫 𝐟𝐫𝐚𝐦𝐞 ?
-This frame consists of two fields.
--The first field is given by the superposition of error flags contributed from different nodes.
--The second field is the error delimiter. (Recessive)
-Error flag can be either active-error flag or passive-error flag.
--Active error flag consists of six consecutive dominant bits.
--Passive error flag consists of six consecutive recessive bits.
--The error delimiter consists of eight recessive bits.
--ال error frame وهو ان حصل error معين في اي بورده سواء ال sender او ال transmitter
--وهو انه بنزل ال bus من high ل low وبعدين ببعت 6 bit بيبعبروا عن ال error flag ووراهم نفس ال 6 bit تاني ودول اسمهم echo
--بعدين تيجي باعت 8 ones وتنتظر ال IFS اللى هما ال 3 ones وكدا تكون بعت ال error frame … بيتبعت لو انت استقبلت غلط مثلا او بعت ومحدش رد عليك …
--ال flag error واللي هما اول 6 bits دول بيكونوا 6 ones أو 6 zeros وده علي حسب هو ال error كان active error ولا passive error ؟
--يعني ايه بقى الكلام ده ؟ هو ايه اللى passive و active ده ؟
/**************/
𝐇𝐨𝐰 𝐂𝐀𝐍 𝐦𝐚𝐧𝐚𝐠𝐞 𝐭𝐡𝐞 𝐞𝐫𝐫𝐨𝐫 𝐬𝐭𝐚𝐭𝐞𝐬?
In every CAN node, there are 2 error counters
1-Transmit Error Counter (TEC)
2-Receive Error Counter (REC).
--When the transmitter detects an error in the transmitted frame, it
increments the TEC by 8.
--A receiver detecting an error will increment its REC by 1.
--On successful transmission/reception the error counters are reduced by 1.
--بص يا حسن
--هما لو 6 وحايد فدول بيعبروا عن passive error ولو 6 اصفار بيعبروا عن active error.
--بص يا حسن ال can فيه اتنين counter واحد
--Transmit error counter (TEC)
--ده انه كل مبيحصل error في حالة ال transmit بعت بقى ومجاش ليك Ack أو اي سبب خلي النود متبتعتش اللى عندها فالكونتر ده هيزيد ب 8 في المره الواحده.
Recommended by LinkedIn
--Receive error counter (REC)
--وهو ان كل ميحصل خطأ في الاستقبال بيزود الكونتر ده ب 1 عادي.
تمام كدا يا حسن ؟ معانا اتنين كاونتر واحد بيزيد ب 8 مع كل خطأ في الارسال وواحد بيزيد ب 1 مع كل خطأ في الاستقبال.
--هستخدم الاتنين كاونتر دول في ايه ياحسن ؟
--هستخدمهم في اني اعمل monitoring لعدد ال errors اللى حصلت ومن ثم اقدر اقول اني في state اسمها ايه دلوقت .
--برضه عشان تبقي عارف يا حسن في كل مره ببعت صح او بستقبل صح ومفيش مشاكل بنقص من العداد المقابل للعلمليه اللى انا بعملها 1.
--براقب اذاي بقى الحاله بتاعت ال errors ؟
--Based on the error counts, the node behavior varies.
---By default, the Active Error frame will be transmitted on the bus, when
TEC and REC < 128.
---But when 127 < TEC \ REC > 255, the passive Error frame will be
transmitted on the bus.
--Finally, the node enters into the Bus off state, when TEC > 255.
--If node enters into the bus off state then no frames will be transmitted.
--لو الاتنين كاونتر اقل من 128 كدا يبقي انا في ال active error ولما اجي ابعت ال error frame طبعا هخلي ال 6 bits ب zeros لانه Active error.
--لو احد الاتنين كاونتر كان اكبر من 128 واقل من 255 يبقي احنا كدا في حالة passive error ولما اجي ابعت ال error frame طبعا هخلي ال 6 bits ب ones لانه passive error.
--وكذلك لو حد منهم الاتنين وصل ل 255 هيكون وصل لمرحة ال bus off وهنا البورده دي دخلت
/**************/
4-Overload frame
.
𝐖𝐡𝐚𝐭 𝐢𝐬 𝐎𝐯𝐞𝐫𝐥𝐨𝐚𝐝 𝐟𝐫𝐚𝐦𝐞 ?
--نيجي لأخر نوع من الفريمز بتاعت ال can وهو ال .overload frame
--The overload frame will be generated, when the receiving node is overloaded – i.e. it is not able to detect and receive the incoming messages.
--An Overload frame indicates that its transmitter requires delay before receiving next data or remote frame The overload flag consists of six dominant bits.
--بص يا حسن هو لو فيه بورده عماله تستقبل packets من بورده تانيه وبعدين اللى بتستقبل دي مش ملاحقه انها تقرا ورا اللى بتبعت او انت في ال sw لسه مروحتش قريت من الميل بوكس بتاع ال can او ال buffer ده لحد متملي فاللي بتستقبل دي عايزه تعرف اللى بتبعت اهدي شويه الله يكرمك عشان اتمليت علي الاخر.
الفريم بتاعه بيتكون من ايه ؟
--Consists of two fields: overload flag and overload delimiter
--The format is very similar to Error Frame but without the error counters incrementing.
--The overload delimiter consists of eight recessive bits.
--بيبعت ال start bit بعدين وراها 6 zeros ووراها echo 6 zeros زيهم وبعدين delimiter ب 8 ones
--التريك هنا في ايه يا حسن ؟
--لو تلاحظ مش ده نفس ال error frame في حالة ال Active error ؟
--6 اصفار وراهم سته زيهم ودليميتر 8 وحايد
-ووواوووووووو
/*************/
𝐇𝐨𝐰 𝐝𝐨𝐞𝐬 𝐚 𝐂𝐀𝐍 𝐜𝐨𝐧𝐭𝐫𝐨𝐥𝐥𝐞𝐫 𝐝𝐢𝐟𝐟𝐞𝐫𝐞𝐧𝐭𝐢𝐚𝐭𝐞 𝐭𝐡𝐞 𝐨𝐯𝐞𝐫𝐥𝐨𝐚𝐝 𝐟𝐫𝐚𝐦𝐞 𝐚𝐧𝐝 𝐞𝐫𝐫𝐨𝐫 𝐟𝐫𝐚𝐦𝐞 ?
--طب وال CAN اللى في بقيت البورد او ال ECUs هتفرق اذاي بين ان ده active error frame ولا overload frame ؟
--هقولك يا حسن حاضر
However, a CAN node can distinguish them by the time
when the frame was received:
--An overload frame will only occur during the interframe space,
--and an error frame only during an actual CAN frame
--بص يا حسن انت في حالة ال error frame انت قبل مبتبعت ال frame بتكون عملت update لواحد من الاتنين counter يا بتاع ال receive يابتاع ال transmit
-الحاجه التانيه والاخطر واللي تفرق بين ال error frame وال overload frame هو ان ال overload frame أول مبيحصل البورده بترد علي طول ومبتستناش ال IFS او ال (InterFarme space ) دول ال 3 ons اللى بيتبعتوا بعد كل نهاية frame عشان تفصل الفريمز عن بعض التريك هنا بقى ان ال overload frame مبيستناش ال IFS ده يخلص وبيقطعه فورا عكس ال error frame واللي بيتبعت اول ميحصل error.
/***********/
𝐖𝐡𝐚𝐭 𝐢𝐬 𝐂𝐀𝐍 𝐢𝐧𝐭𝐞𝐫𝐟𝐚𝐜𝐞 𝐡𝐚𝐫𝐝𝐰𝐚𝐫𝐞 ?
--CAN Controller
--deals with the communication functions described by the CAN protocol.
--It also triggers the transmission, or the reception of the CAN messages.
--CAN Transceiver
--is responsible for the transmission or the reception of the data on the CAN bus.
--It converts the data signal into the stream of data collected from the CAN bus that the CAN controller can understand.
--وه اتكلمنا عنه المره اللى فاتت بالتفصيل وهو ان عشان ابعت باكت باستخدام ال CAN protocol محتاج CAN controller + Transceiver
وشرحنا كل واحد ليه
--twisted pair cable is used to transmit or receive the data. It is also
known as CAN bus
--CAN bus consists of two lines, i.e., CAN low line and CAN high line,which are also known as CANH and CANL, --respectively.
--The transmission occurs due to the differential voltage applied to these lines.
The CAN uses twisted pair cable and differential voltage because of its environment.
--The twisting of the two lines also reduces the magnetic field.
--The bus is terminated with 120Ω resistance at each end.
/***********/
𝐖𝐡𝐚𝐭 𝐚𝐫𝐞 𝐂𝐀𝐍 𝐛𝐮𝐬 𝐞𝐫𝐫𝐨𝐫𝐬 ?
There are five types of CAN error can introduce on CAN-BUS by receiver and transmitter node:
1. Bit error
2. Stuff error
3. CRC error
4. Acknowledgment error
5. Form Error
/************/
𝟏. 𝐁𝐢𝐭 𝐞𝐫𝐫𝐨𝐫 (𝐈𝐧𝐭𝐫𝐨𝐝𝐮𝐜𝐞𝐝 𝐁𝐲 𝐓𝐫𝐚𝐧𝐬𝐦𝐢𝐭𝐭𝐞𝐫)
Every transmitter node reads back its transmitted bit from CAN line along with other ECUs But if it will not get read bit same as it transmitted then the transmitted node stops the further transmission and introduces an error frame on CAN line. This error is known as bit error.
--طيب بص يا حسن اول error ممكن يحصل معانا هو ال bit error .. وزي م انت عارف ال can كل ميكتب bit بترجع ليه back تاني من علي ال bin التانيه عشان يبقي بي lesen اللى بيتكتب علي ال bus فكل bit يكتبها علي ال bus لازم يقراها يشوف زي مهو كتبها ولا لا لو اه يبقي فل كدا ويكمل لو قراها غير مهو كتب تبقي دي ايه حصل mimatch وهيجي عامل frame error بسبب اختلاف ال bit اللى كتبها وبين اللى هو قراها.
--Note:
--If bit mismatch is detected during the Arbitration field or ACK then the transmitter neither looks it as bit error nor introduces any error frame because as per the CAN standard these fields have defined functionality.
--طيب فيه سؤال جامد هنا هو ايه اللى هيحصل في حالة انه بيكتب حاجه ورجع ليه حاجه تانيه ولكن دي كانت Arbitration يعني فيه master تاني بياخد ال Bus منه وده لانه ك identifier اقل منه في القيمه فالاولويه بتاعته اعلي زي مكنا المهم انه هياخد ال bus فالقيمه اللى رجعت لل can مختلفه عن اللى هو كتبها ولكن دي مش bit error دا دي حد تاني اللى كسب ال bus فمينفعش في الحاله دي يحصل bit error او ي generate error frame … قالك في الحاله دي فعلا مبيحصلش جينريريشن ومبيعتبرش ان دي bit error … وفيه كمان حاله في حالة ال ack لأنه لما بيبعت بيسيب ال bus فحد تاني بينزل ال bus عشان يبعت ال ack فلو سمعت هتكون سمعت حاجه غير اللى انت سايب ال bus عليها فقالك برضه مش هيحصل generation g ل bit error ومش هيبعت error frame.
--فخلاصة الحته دي ال bit error flag مش هيترفع في حالة ال arbitration وال acknowledge .
--CRC Delimiter, ACK and EOF are also fixed length fields in CAN frame so it will also not be the part of bit error frame execution if more than five consecutive bits are found.
/***************/
𝟐-𝐒𝐭𝐮𝐟𝐟 𝐄𝐫𝐫𝐨𝐫(𝐈𝐧𝐭𝐫𝐨𝐝𝐮𝐜𝐞 𝐁𝐲 𝐑𝐞𝐜𝐞𝐢𝐯𝐞𝐫)
--More than 5 consecutive bits of the same polarity in CAN frame between the start of Frame(SOF) to CRC field is considered as a faulty frame on CAN Bus and it signaled as stuff error on CAN line.
--طيب ال error التاني اللى ممكن يحصل هو ال Stuff Error وهو ان لو لمحت من اول ال start of frame لحد ال crc..اكتر من 5 bits ورا بعض ليهم نفس القيمه او ال polarity يبقي كدا ا generate Stuff error لان زي ممتفقين كل 5 bits ورا بعض ليهم نفس القيمه لازم ال bit السادسه افصل ب bit قيمتها عكس الخمسه دول لو ده محصلش ولقيت مثلا عن الريسيفر جاي ليا 6 وحايد ورا بعض او 6 اصفار ورا بعض يبقي ا generate Stuff error وابعت error frame .
/***************/
𝟑-𝐂𝐑𝐂 𝐄𝐫𝐫𝐨𝐫(𝐈𝐧𝐭𝐫𝐨𝐝𝐮𝐜𝐞 𝐁𝐲 𝐑𝐞𝐜𝐞𝐢𝐯𝐞𝐫)
--The transmitter transmits CRC of transmitted data at the CRC field of CAN frame and receivers also calculate CRC on received data.
--If the receiver found Calculated CRC is different from received CRC at CRC field then receiver signaled it as CRC error and introduced an error frame on CAN line.
--مش قولنا ال Sender بيحسب عنده قيمة ال CRC لقيمة ال data اللى هيبعتها في الفريم وال receiver لما بيستقبل الفريم بيحسب ال crc ليه ويقارن القيمتين ببعض لو لقاهم زي بعض يبقي فل كدا والداتا محصلش فيها مشاكل لو مختلفين يبقي الداتا حصل فيها مشكله ويرفع crc bit flag وطبعا هيزود ال REC (ال receive error counter ) بواحد وي generate error frame .
/***************/
𝟒-𝐀𝐂𝐊 𝐄𝐫𝐫𝐨𝐫(𝐈𝐧𝐭𝐫𝐨𝐝𝐮𝐜𝐞 𝐁𝐲 𝐓𝐫𝐚𝐧𝐬𝐦𝐢𝐭𝐭𝐞𝐫)
--After Transmission of CRC field of CAN frame
--Transmitter sends ACK (a recessive bit) and receiver makes it dominant as a part of acknowledgment to the transmitter.
--During readback, the transmitter found the dominant bit and considered it as receiver acknowledgment and if it read a recessive bit then the transmitter signaled it as ACK error and introduced an error frame.
--هنا ال sender بعت علي id مفيش ولا بورده او ECU بتفلتر بيه ومن ثم محدش هيستقبل اللى ال sender بعته ومن ثم محدش هيرد ب ack (ال master بعد مبيبعت بتيجي عن ال bit بتاعت ال ack ال master بيسيب ال bus عشان يدي فرصه للي بيستقبل يرد ب ack وبما ان محدش استقبل محدش هيرد ب ack محدش هينزل ال bus يعني من high ل low ) فالماستر او ال sender هيعرف ان محدش رد وهيجي رافع ACK bit flag ويجي مزود ال TEC ب 8 ويجي عامل جينرايشن ل error frame .
/***************/
𝟓-𝐅𝐨𝐫𝐦 𝐄𝐫𝐫𝐨𝐫(𝐈𝐧𝐭𝐫𝐨𝐝𝐮𝐜𝐞 𝐁𝐲 𝐑𝐞𝐜𝐞𝐢𝐯𝐞𝐫)
As per CAN Frame Format, there are some fields of fixed length and format like CRC Delimiter, ACK Delimiter, EOF ,InterFrame Space And if it is detected corrupted at receiver side then it signaled as Form Error and Node will introduce an error frame on CAN line.
--ده خاص بشكل ال frame يا حسن لو اختلف شكل fild معين سواء بعدد ال bits اللى المفروض تكون موجوده فيه او لو حاجه المفروض تكون بقيمة معينه لقيتها بقيمه تانيه(حاجه غير الحاجات اللى احنا اتكلمانا عنها)..يعني مثلا احنا متفقين ان ال crc delimiter تكون one bit وب one لأو لقينا عكس كدا ؟ يبقي اعمل form error وازود ال REC ب 1 … أو مثلا لو لقيت ال EOF واللي هو اخر field في الفريم واللي المفروض يكون ب سبع وحايد لقيته مثلا ب 8 وحايد او وحايد واصفار او كله اصفار فده كدا form error لان حاجه المفروض ليها شكل معين كقيمه وكعدد ان اختلفت يبقي ده frame error…او مثلا المفروض عارفين ان ال Inter frame space (IFS) يكون ب 3 وحايد فاي اختلاف في القيم او العدد فده هيكون frame error .
/***********************/
What is Error Confinement Mechanism ?
--بيقولك بقى ان ال can راجل جدع ورايق كدا والبورده اللى بتعمل قلق ووجع دماغ علي ال bus وتعدي threshold معين بيزحلقها من علي ال bus خالص .. ده اللى هو اذاي يعني ؟
--In CAN network Every node is very honest.
--if any node transmits/receives a continuous faulty frame then it will disconnect itself from the CAN network after a threshold limit if fault is not recovered.
--To decide this threshold every Node has two error
counters:
--Transmit error Counter(TEC) and Receive Error Counter(REC) to keep track of errors generated because of the above discussed situations.
--بص لو فيه بورده كل شويه يحصل عنده مشكله وتبعت error frame وبشكل متكرر فال can مش عايز وجع الدماغ ده فهيكون كل بورده عندها الاتنين كاونتر اللى قولنا عليه واحد بيزيد ب 8 مع كل خطأ وده في حالة ال error transmitted والتاني بيزيد بواحد في حالة ال receive transmit وبينقصوا ب 1 لو حصل انه بعت او ساتقبل صح .
--قولنا بقى ان ال counters دي لو حد منهم وصل ل رقم معين بنتنقل ل state تانيه واللي هما
--On the basis of these counter, Nodes are categories in three error states
1-Active Error state(When TEC<=127 and REC<=127)
2-Passive Error state( When TEC>127 or REC>127 )
3-Bus-Off State(When TEC>255)
--ان بورده بقى عماله تعمل حورات فهيوصل احد ال Counters عندها ل 255 واللي في الغالب هيكون TEC ومن ثم دي ال state بتاعت ال bus off واللي فيها لازم البورده تفصل نفسها عن ال bus وهيحصل انتربت لده والمفروض نبقي مهندلين كود بقى للحته دي المفروض هنعمل ايه هنا.
--A CAN Node enters into Bus-Off State When TEC>255.
--In this state CAN node will be removed from CAN network and now it will no longer be available on CAN network to participate in any CAN activity.
/*************************/
𝐖𝐡𝐚𝐭 𝐢𝐬 𝐁𝐢𝐭 𝐌𝐨𝐧𝐢𝐭𝐨𝐫𝐢𝐧𝐠 ?
--Every transmitter reads back its transmitted bit from the CAN bus to ensure its transmitted data Integrity is called Bit monitoring.
--The concept of CAN bus arbitration is also decided by bit monitoring.
--when two nodes start transmission at the same time and read back its transmitted bit then one has to leave the bus if it read something else what it has transmitted and thus the other node wins the arbitration and continues its transmission while the looser node should wait for bus idle.
Note: During Arbitration no bit error will happen in case of bit mismatch.
--ودي اللى اتكلمنا عنها فوق وهو ان كل bit ال transmitter بيحطها علي ال bus بترجع ليه تاني ويقراها عشان يتأكد ان اللى هو كتبها صح ولكن في ماعادا حالة ال arbitration او ال Ack لكن غير كدا فهو هيجي رافع فلاج ال
bit error ويجي مزود ال REC بواحد ويجي عامل جينيريت ل error frame
/*********************/
---بكدا الحمدلله نكون جاوبنا علي السؤال بتاعنا ومعلش لو بدخل في تفاصيل ولكن ببقي عايز اعرفك الصورة كاملة عشان الموضوع يثبت وتفهمه بشكل عميق.
---كمان هتلاقي كل البوستس اللي قبل كدا علي الهشتاج ده #elshiekh_embedded وده #shiekh_elembedded سواء هنا او علي الفيس.
---وطبعا لو وصلت لهنا متنساش تدعيلي + انا هبقى سعيد جدا لو انت وصلت لهنا
/***********************/
.
بجد شكراا جدا ليك ...ممكن لو تشرحلي ازي اعمله مع OBD2+ 🤞🤞