BLE périphérique débit limite
Nous sommes le développement de BLE capteur Périphérique de travailler avec un iPad, qui exige que le suivant le débit de données sur la BLE de notification caractéristique (sans le reconnaître) à l'aide d'un TI CC2541 BLE module et un profil personnalisé:
Un 20 octets (GATT maximum de paquet standard) toutes les 10ms, ou depuis nous semblent avoir une limite de 4 paquets par intervalle de connexion, ce qui équivaut à une intervalle de connexion toutes les 40ms. Le débit nécessaire est de 2 000 octets par seconde, la TI site recommande la CC2541 BLE solution être utilisé pour plusieurs dispositifs de détection qui a besoin de ce niveau de débit de données.
Le profil pour le BLE module est fixé avec min et max de la connexion des intervalles de 20 ms et 40 ms, respectivement, ce qui devrait suffire. Le "Accessoire Bluetooth lignes Directrices de Conception pour les Produits Apple" document suggère que le minimum et le maximum de la connexion des intervalles que nous avons défini, comme ci-dessus sont correctes. Nous utilisons les dernières iPad et Apple les outils pour iOS 6 sur un nouveau Mac Mini /Mac Book.
Avec un programme de test simple sur l'iPad, nous pouvons obtenir le lien bien travailler l'envoi de 20 octets des paquets pour le BLE Périphérique à des intervalles de 20ms, mais une fois qu'on baisse ce à 10ms au besoin, nous nous commencer à perdre des paquets ou se corrompre des paquets, nous avons le FIFO vide interrompre désactivé afin que nous puissions gérer l'envoi à la BLE module FIFO plus rapide, et nous sommes à l'aide de la vitesse de transmission maximale de 230400 pour envoyer le 20 octets des paquets pour le BLE TX FIFO de la micro.
Nous nous rendons compte que nous sommes à l'extrémité supérieure de la BLE de limite de transfert, et de ce qui est possible. Quelqu'un peut-il indiquer si il existe une solution pour la réalisation de 2000 octets par seconde, débit à l'aide de la TI CC2541 BLE à puce ou module avec une mise à jour de l'iPad?
OriginalL'auteur user2683370 | 2013-08-14
Vous devez vous connecter pour publier un commentaire.
Nous utilisons TI 2540 (BLE pile de la version 1.3.2) avec succès avec l'iPad/iPod/iPhone (iOS 6.x et 7.x). Actuellement, nous envoyer 75 notifications de 20 octets par seconde => 1500 octets/seconde. Mais j'ai essayé d'envoyer 125 notifications et qui a travaillé aussi bien.
De cours, plus vous envoyer de la plus grande probabilité de perdre des données, par exemple, moins de temps pour renvoyer un accusé de réception négatif ed message.
Je l'ai connu par iOS BLE de la pile peut entrer dans un mode où il commence à NACK messages en continu. Si cela vous arrive, vous perdez beaucoup de messages. J'ai signalé une erreur d'Apple à ce sujet. (Ce problème semble avoir été résolu dans iOS 7.1.beta3/4.)
J'ai actuellement:
Oui, elle ne se conforme pas avec Apple. Mais je crois qu'ils peuvent être assouplies dans notre cas.
Mise à JOUR: j'ai aussi essayé d'utiliser un iDevice comme périphérique, c'est à dire, BTLE entre les deux iDevices. Ici, j'ai envoyé 150 messages par seconde sans aucun problème. Vérifier le code ici.
Ci-dessus définit à partir de mon périphérique de code qui est basé sur TI 2540 SoC. Vous ne pouvez pas utiliser ces dans un iDevice agissant en tant que périphérique. Dans les iDevices vous pouvez utiliser
[_peripheralManager setDesiredConnectionLatency:CBPeripheralManagerConnectionLatencyLow forCentral:central];
comme indiqué dans la ligne 153 dans mon exemple: github.com/marchv/btle-transfer/blob/master/BTLE%20Transfer/...OriginalL'auteur Jens Schwarzer
Voici quelques observation sur le débit que nous avons constaté lors de notre RnD sur iPhone avec BLE. Les données ci-dessous est basé sur écrire à la réponse.
Comme vous pouvez le voir, la valeur de MTU augmente, nous obtenons un débit maximal. Mais nous ne pouvons pas augmenter de toute limite. Le ci-dessus MTU valeurs par défaut sont les maximale autorisée valeur MTU que par la configuration donnée. [MTU Maximum Transmission Unit. j'.e maximum d'octets pouvant être envoyés dans une demande d'écriture]
Les commentaires sont les bienvenus pour les données ci-dessus.
Désolé que je n'ai pas le mentionner. C'est écrire avec la réponse.
Oui, bien sûr, donne des performances très faibles car vous avez besoin d'au moins un aller-retour par demande. L'utilisation d'écrire sans réponse pour un débit significativement supérieur.
Hmmm peut-être.. mais je ne fais pas confiance à écrire sans réponse. Notre cas d'utilisation principalement nécessaire à la sécurité des données et le besoin de la confirmation que le centre de correctement écrit des données sur le périphérique.
OriginalL'auteur Sudhin Philip
On vous envoi "écrire sans réponse" commandes? Vous pouvez envoyer 4 paquets par événement de connexion de cette façon. À l'aide de votre précédent 20ms intervalle de connexion, vous serait l'envoi de 4 paquets de 20 octets chaque 0.02 secondes. Mettre ensemble: 4*20/0.02 = 4000 octets par seconde, facile.
Je doute fortement que vous obtenez des données corrompues. La couche de liaison ajoute un CRC et 2 bits de "prochaine devrait" BLE paquets, afin d'assurer Un) tous les bits sont reçus correctement et b) les paquets n'étaient pas envoyés en dehors de l'ordre. Le TI de la pile et iOS de contrôle de la couche de liaison, donc je doute que vous avez bâclé.
OriginalL'auteur petEEy
iOS 7 semble avoir fait quelques optimisations concernant les niveaux de débit pour BLE des transferts. Essayez à nouveau sur un iOS 7 de l'appareil.
OriginalL'auteur Mark
Vous n'avez pas vraiment poser une question, mais je peux vérifier que votre choix de la limite de 2000 octets/s est possible.
découvrez la réponse sélectionnée sur ce post sur le forum (http://e2e.ti.com/support/wireless_connectivity/f/538/p/353327/1244676.aspx#1244676) pour voir comment nous avons fait ce travail.
Oui, en effet. édité. Nous observons des taux de 2800 octets/sec
OriginalL'auteur Mgill404